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

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

img

img

img

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 中的索引。因此,使用这种方式可以处理表格变量中包含不同变量名称的情况。