我有一个单列矩阵A,其中包含的时间列表如下,
1710
1760
2022
2300
2456
2687
3398
3480
3767
3846
5493
5678
5976
7562
7789
7800
8456
9256
9432
9684
12882
13456
16789以及包含时间周期和标签的cell数组B (启动时间结束时间标签)。
1708 2392 +
3394 3660 +
5490 5743 +
7555 7809 -
9256 9509 -
12878 15066 -我想在A中找到每个项目的标签,并将其写成一个新的矩阵。因此,我需要检查A中的每一项,并将其与B中的开始时间和结束时间进行比较,如果它属于给定的时间限制,我可以在矩阵C中写入标签(+/-),如果没有,我可以在那里写0。如何在MATLAB中做到这一点?
发布于 2014-02-24 16:29:31
您可以使用bsxfun比较A在B中的启动时间和结束时间。
startTime = vertcat( B{:,1} ); % assuming B is 6x3 cell array
endTime = vertcat( B{:,2} );
sel = bsxfun( @ge, A', startTime ) & bsxfun( @le, A', endTime ); % check valid interval
[valid inIdx] = max( sel, [], 1 );valid要么是1(对于A中的元素在B中的某个时间间隔内),要么是0。对于A中valid为1的元素,inIdx的相应值将给出区间索引(1至6)。
https://stackoverflow.com/questions/21992448
复制相似问题