2

行列を形成するために MATLAB 2011a で作成した次のプログラムのように、ループを使用せずに行列を作成したいと考えていますn(x,y)

segment1同じ次元をsegment2持ちます (任意の 2 つの行列を使用できます)。

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はこれに使用できます。あなたの と が与えられるsegment1segment2、以下は を計算mします。これはあなたの と同じになりますn:

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