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 回答