我想在不使用任何循环的情况下创建一个矩阵,就像我在MATLAB 2011a中创建的用于形成矩阵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;
我还使用loop
编写了这个程序,但是我想在不使用循环操作的情况下得到矩阵n(x,y)。
答案 0 :(得分:2)
函数accumarray
可用于此目的。根据您的segment1
和segment2
,以下计算m
,与您的n
相同:
x = segment1(:);
y = segment2(:);
m = accumarray([x y], ones(size(x)));