减去两个单元格数组,然后将距离添加到新单元格数组

时间:2016-05-14 19:56:18

标签: arrays matlab cells

我有两个单元格数组,我希望得到两个单元格之间的绝对差异,然后将单元格添加到新单元格数组中,例如:

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)));

如何添加它们并使用新距离更新单元格数组?

1 个答案:

答案 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];