飞机思潮起伏 2023-03-27 22:10 采纳率: 50%
浏览 12
已结题

matlab intersect函数是否无法处理两组datetime?

matlab intersect函数是否无法处理两组datetime?
从数据库获得CSV文件数据进行readtable处理之后,时间自动转成datetime,但调用intersect 函数时一直报错:A B 必须有相同变量
如果是因为标题原因,将如何解决这一问题:实现找出两组时间的交集?

img

img

img

  • 写回答

1条回答 默认 最新

  • xia0xin 2023-03-27 22:26
    关注

    intersect 函数是可以处理两组 datetime 类型的数据的。如果在调用 intersect 函数时报错 A B 必须有相同变量,这通常意味着你需要确保 A 和 B 中包含的变量名称是相同的。

    在读取 CSV 文件并使用 readtable 函数生成表格变量时,表格变量的列名称与 CSV 文件的第一行标题是一致的。因此,如果你的 CSV 文件中包含标题行,则表格变量中的列名称也将自动设置为与标题行相同的名称。

    当你调用 intersect 函数时,如果需要比较的变量名称在 A 和 B 中的列名称不同,就会出现 A B 必须有相同变量的错误。此时,可以使用 ismember 函数来获取 A 和 B 中相同变量名称的索引,然后在调用 intersect 函数时指定相同的变量名称。

    例如,假设你的表格变量 A 和 B 分别包含了名称为 "Time" 和 "Timestamp" 的时间变量,你可以使用以下代码找出两组时间的交集:

    % 读取 CSV 文件生成表格变量 A 和 B
    A = readtable('data_A.csv');
    B = readtable('data_B.csv');
    
    % 将时间变量转换为 datetime 类型
    A.Time = datetime(A.Time);
    B.Timestamp = datetime(B.Timestamp);
    
    % 获取 A 和 B 中包含的相同变量名称的索引
    [~, idxA, idxB] = intersect(A.Properties.VariableNames, B.Properties.VariableNames);
    
    % 指定变量名称并调用 intersect 函数
    C = intersect(A(:, idxA), B(:, idxB), 'rows', 'stable');
    
    在这个例子中,intersect 函数的第一个输入参数使用了 A(:, idxA),其中 idxA 是一个向量,包含了变量 "Time" 在 A 中的索引。同样,B(:, idxB) 也指定了变量 "Timestamp" 在 B 中的索引。因此,使用这种方式可以处理表格变量中包含不同变量名称的情况。
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月5日
  • 已采纳回答 3月28日
  • 创建了问题 3月27日

悬赏问题

  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!