2012-09-08 91 views
2

我想在不使用任何循环的情况下创建矩阵,就像我在MATLAB 2011a中为矩阵n(x,y)所做的以下程序一样。在MATLAB中不使用循环或嵌套循环操作创建矩阵

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

回答

2

功能accumarray可以用于此。鉴于你segment1segment2,下面的代码计算m,这将是与您的n

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