在MATLAB中不使用循环或嵌套循环操作创建矩阵

时间:2012-09-08 02:32:27

标签: matlab loops nested

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

segment1segment2具有相同的尺寸(您可以使用任意两个矩阵)。

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;

我还使用loop编写了这个程序,但是我想在不使用循环操作的情况下得到矩阵n(x,y)。

1 个答案:

答案 0 :(得分:2)

函数accumarray可用于此目的。根据您的segment1segment2,以下计算m,与您的n相同:

x = segment1(:);
y = segment2(:);
m = accumarray([x y], ones(size(x)));