0

以下に示すようなデータがあります。

for a=1:2
    for b=1:3
        m{a,b}=zeros(3,3)
    end
 end

m{1,1}=[6 1 1;1 7 1;1 1 6];
m{1,2}=[3 2 2;2 5 2;2 2 6];
m{1,3}=[5 3 3;3 9 3;3 3 7];

m{2,1}=[2 4 4;4 5 4;4 4 8];
m{2,2}=[2 1 1;1 6 1;1 1 5];
m{2,3}=[6 2 2;2 7 2;2 2 8];

各データセットの対角線のみを取り、これらの数値を再グループ化したいと思います。たとえば、

%RESULT

row_1_1=[6;3;5]  %which 6 from m{1,1}(1,1), 3 from m{1,2}(1,1) and 5 from m{1,3}(1,1)

row_1_2=[7;5;9]  %which 7 from m{1,1}(2,2), 5 from m{1,2}(2,2) and 9 from m{1,3}(2,2)

row_1_3=[6;6;7]  %which 6 from m{1,1}(3,3), 6 from m{1,2}(3,3) and 7 from m{1,3}(3,3)

row_2_1=[2;2;6]  %which 2 from m{2,1}(1,1), 2 from m{2,2}(1,1) and 6 from m{2,3}(1,1)

等々。

これらの結果を取得する方法はありますか??ありがとう~

4

2 に答える 2

0

あなたは単に行うことができます:

row_result = zeros(a,b,3);
for i=1:a
    for j=1:b
        for k = 1:3
            row_result(i,k,j) = m{i,k}(j,j);
        end
    end
end

提供されたサンプル データの場合、次のような結果が得られます。

>> row_result(1,:,1)

ans =

     6     3     5

>> row_result(1,:,2)

ans =

     7     5     9

>> row_result(1,:,3)

ans =

     6     6     7

>> row_result(2,:,1)

ans =

     2     2     6
于 2013-03-26T04:41:09.857 に答える
0

新しいマトリックスを構築するための醜い for ループで立ち往生していると思います。

高次元の行列や構造体の配列など、他のデータ型ではなく、セル配列を使用している理由はありますか? セル配列のポイントは、各セルの内容が互いに完全に独立していることです。つまり、':' を使用してセルの内容の内部フィールドにアクセスすることはできません。

于 2013-03-26T04:41:29.230 に答える