2

我想在不使用任何循环的情况下创建一个矩阵,就像我在 MATLAB 2011a 中为形成 matrix 制作的以下程序一样n(x,y)

segment1并且segment2具有相同的维度(您可以采用任意两个矩阵)。

segment1 = [1 2 3;4 5 6];
segment2 = [5 2 6;9 1 2];

seg1_max = max(max(segment1));
seg2_max = max(max(segment2));

n = zeros(seg1_max, seg2_max);
i = 1; j = 1;

while i<=size(segment1, 1)        
    while j<=size(segment1, 2)    
        x = segment1(i, j);
        y = segment2(i, j);
        n(x,y) = n(x,y)+1;
        j = j+1;    
    end;
i = i+1; j = 1;
end;

我也使用 for 制作了这个程序loop,但我想在不使用循环操作的情况下获取矩阵 n(x,y)。

4

1 回答 1

2

该功能accumarray可用于此目的。给定您的segment1and segment2,以下计算m将与您的 相同n

x = segment1(:);
y = segment2(:);
m = accumarray([x y], ones(size(x)));
于 2012-09-08T03:27:57.407 回答