1

2900 x 7 サイズのマトリックスがあります

re2 = [x y z se index xc yc];

各列 (x、y、z、se、インデックス、xc、yc) には、すべて同じサイズの 2900 x 1 の数値が含まれます。

6番目と7番目の列で特定の要素を見つけることにより、このサブマトリックスからいくつかのサブマトリックスを作成しようとしています。このような:

rexy_1_1 = re2(xc==1 & yc==1,:);
rexy_1_2 = re2(xc==1 & yc==2,:);
rexy_1_3 = re2(xc==1 & yc==3,:);
rexy_1_4 = re2(xc==1 & yc==4,:);
rexy_1_5 = re2(xc==1 & yc==5,:);
....
rexy_20_17 = re2(xc==20 & yc==17,:); 

しかし、これは、340 の部分行列を生成するために 340 行を書く必要があることを意味します。これを行う賢い方法はありますか?2 つの for ループを使用しようとしました。

for i=1:20
    for j=1:17
        rexy_i_j = re2(xc==i & yc==j,:);
    end
end

しかし、うまくいきませんでした。

これらの部分行列を取得するにはどうすればよいですか?

4

1 に答える 1

4

さまざまな名前の配列をたくさん作成するのではなく、セル配列を使用する必要があるという@EitanTに同意します。その後、これらのサブマトリックスに としてアクセスできますrexy{i,j}

この cell 配列を作成するにはaccumarray、次のように使用できます。

rexy = accumarray(re2(:,6:7),(1:size(re2,1))',[],@(x){re2(x,:)})
于 2012-11-05T16:39:21.220 に答える