繁体   English   中英

数组交集问题(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相交?我该怎么做? 谢谢。

为了便于阅读,数组的格式不同,并且您希望使它们相同。 有许多选项供您选择,例如@Visser建议,您可以将日期/时间转换为长整数,从而可以更快地进行计算,也可以将其保留为字符串,甚至可以将其转换为字符(例如对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文件,这会将日期保留为字符串格式。

您的第一个数组如下所示:

array1 = linspace(0,1,86400); % creates 86400 seconds in 1 day

您的第二个数组应使用datenum进行转换,然后使用cell2mat使其成为矩阵。 最后,使用ismember查找交叉点:

InterSect = ismember(array2,array1);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM