2012-09-08 90 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)));