我有两个单元格数组,我希望得到两个单元格之间的绝对差异,然后将单元格添加到新单元格数组中,例如:
A={1.1 2.1 ; 1.2 3.2};
B={1 2};
执行聚合功能如下:
d(1) =|1.1 - 1|+|2.1-2| =0.2 and d(2)=1.4
然后结果应该更新单元格数组:
A_Updated={1.1 2.1 d1; 1.2 3.2 d2};
我用下面的代码减去两个单元格:
C = cellfun((@minus),A,B,'UniformOutput',false);
C=num2cell(abs(cell2mat(C)));
如何添加它们并使用新距离更新单元格数组?
答案 0 :(得分:1)
下面的代码会根据需要找到距离和更新。当A
的大小为mx2且B
的大小为1x2时。
A={1.1 2.1 ; 1.2 3.2};
B={1 2};
for i=1:size(A,1)
d1{i,1}=abs(A{i,1}- B{1})+abs(A{i,2}- B{2});
end
A_Updated=[A d1];
更新:当A
的尺寸为mx2且B
的尺寸为kx2时
A={1.1 2.1 ; 1.2 3.2};
B={1 2;2 1};
for i=1:size(A,1)
for j=1:size(B,1)
d1{i,j}=abs(A{i,1}- B{j,1})+abs(A{i,2}- B{j,2});
end
end
A_Updated=[A d1];
更新:当A
的尺寸为mxn且B
的尺寸为kxn时
A={1.1 2.1 ; 1.2 3.2};
B={1 2;2 1};
for i=1:size(A,1)
for j=1:size(B,1)
d1{i,j}=0;
for k=1:size(B,2)
d1{i,j}=d1{i,j}+abs(A{i,k}- B{j,k});
end
end
end
A_Updated=[A d1];