M = [1007 1007 4044 1007 4044 1007 5002;
552 552 300 552 300 552 431;
2010 2010 1113 2010 1113 2010 1100;
7 12 25 15 12 30 2]
N = [1007 4044 5002;
552 300 431;
2010 1113 1100;
1.2 5 2.14;
5.3 2.1 2.03]
N(1:3,:) = unique(M(1:3,:)','rows')'
如果M(4,:)
N(1:3,i), i=1,2,3
对应A
的所有值放在单元格abs(N(4,i)-N(5,i))>0.2*N(5,i)
的一个向量中
A是要构建的单元格
我的例子:
A = {[7 12 15 30],[25 12]}
[7 12 15 30]
对应N(1:3,1)
[25 12]
对应N(1:3,2)
第二个例子:
M = [1007 1007 4044 1007 4044 1007 5002 5002 5002 622 622;
552 552 300 552 300 552 431 431 431 124 124 ;
2010 2010 1113 2010 1113 2010 1100 1100 1100 88 88;
7 12 25 15 12 30 2 10 55 32 12];
N = [1007 4044 5002 622;
552 300 431 124;
2010 1113 1100 88;
-1 2 -3 4;
1.5 1.9 2.9 4.1];
A = {[7 12 15 30],[2 10 55]}
答案 0 :(得分:2)
使用来自unique
-
%// Find unique IDs for each column
[~,~,idx] = unique(M(1:3,:)','rows') %//'
%// Accumulate elements from the fourth row of M based on the IDs
A = accumarray(idx(:),M(4,:).',[],@(x) {x}) %//'
%// Use mask corresponding to abs(N(4,i)-N(5,i))>0.2*N(5,i) and
%// filter out some of the cells from the output
A = A(abs(N(4,:)-N(5,:))>0.2*N(5,:))
对于给定的输入,我们得到 -
>> celldisp(A)
A{1} =
12
30
15
7
A{2} =
12
25
如果您正在寻找'Stable'
输出,则可以使用accumarrayStable
而不是here给我们 -
>> celldisp(A)
A{1} =
7
12
15
30
A{2} =
25
12