数组交集问题(Matlab)
Array intersection issue (Matlab)
我想在Matlab中进行两个数组的交集,但是找不到方法。
我要相交的数组是:
和
我试过:[dur, itimes, inewtimes ] = intersect(array2,char(array1));
但运气不好。
但是,如果我尝试将 array1 与 array3 相交(请参阅下面的 array3),[dur, itimes, inewtimes ] = intersect(array3,char(array1));
相交会毫无错误地执行。
为什么我不能将 array1 与 array2 相交?我该怎么做?。谢谢。
您的第一个数组看起来像这样:
array1 = linspace(0,1,86400); % creates 86400 seconds in 1 day
您的第二个数组应使用 datenum
转换,然后使用 cell2mat
使其成为矩阵。最后用ismember
求交集:
InterSect = ismember(array2,array1);
只是为了阅读方便,你们的Arrays格式不一样,想让它们一样。您有很多选择,就像@Visser建议的那样,您可以将 date/time 转换为 long int 以便更快地计算,或者您可以将它们保留为字符串,甚至将它们转换为字符(就像您所做的那样用 char(Array2)).
这是我的例子:
A = {'00:00:00';'00:01:01'} %//Type is Cell String
Z = ['00:00:00';'00:01:01'] %//Type is Cell Char
Q = {{'00:00:00'};{'00:01:01'}} %//Type is a Cell of Cells
A = cellstr(A) %//Convert CellStr to CellStr is essentially doing nothing
Z = cellstr(Z) %//Convert CellChar to CellStr
Q = vertcat(Q{:,:}) %// Convert Cell of Cells to Cell of Strings
I = intersect (A,Z)
>>'00:00:00'
'00:01:01'
II = intersect (A,Q)
>>'00:00:00'
'00:01:01'
这会将您的日期保存为字符串格式,以防您想要将它们导出回 txt/csv 文件。
我想在Matlab中进行两个数组的交集,但是找不到方法。
我要相交的数组是:
和
我试过:[dur, itimes, inewtimes ] = intersect(array2,char(array1));
但运气不好。
但是,如果我尝试将 array1 与 array3 相交(请参阅下面的 array3),[dur, itimes, inewtimes ] = intersect(array3,char(array1));
相交会毫无错误地执行。
为什么我不能将 array1 与 array2 相交?我该怎么做?。谢谢。
您的第一个数组看起来像这样:
array1 = linspace(0,1,86400); % creates 86400 seconds in 1 day
您的第二个数组应使用 datenum
转换,然后使用 cell2mat
使其成为矩阵。最后用ismember
求交集:
InterSect = ismember(array2,array1);
只是为了阅读方便,你们的Arrays格式不一样,想让它们一样。您有很多选择,就像@Visser建议的那样,您可以将 date/time 转换为 long int 以便更快地计算,或者您可以将它们保留为字符串,甚至将它们转换为字符(就像您所做的那样用 char(Array2)).
这是我的例子:
A = {'00:00:00';'00:01:01'} %//Type is Cell String
Z = ['00:00:00';'00:01:01'] %//Type is Cell Char
Q = {{'00:00:00'};{'00:01:01'}} %//Type is a Cell of Cells
A = cellstr(A) %//Convert CellStr to CellStr is essentially doing nothing
Z = cellstr(Z) %//Convert CellChar to CellStr
Q = vertcat(Q{:,:}) %// Convert Cell of Cells to Cell of Strings
I = intersect (A,Z)
>>'00:00:00'
'00:01:01'
II = intersect (A,Q)
>>'00:00:00'
'00:01:01'
这会将您的日期保存为字符串格式,以防您想要将它们导出回 txt/csv 文件。