我想从一个大的子矩阵中生成特定数量的子矩阵

时间:2014-02-28 18:20:34

标签: matlab

我有A = [1 2 3; 4 5 6; 7 8 9; 10 11 12; 13 14 15; 9 8 7; 8 7 6; 7 6 5]

如何减去四个矩阵A1 = [1 2 3; 4 5 6] A2 = [7 8 9; 10 11 12] A3 = [13 14 15; 9 8 7] A4 = [8 7 6; 7 6 5],考虑到子矩阵的A1,A2,A3和A4名称,用于循环。感谢。

3 个答案:

答案 0 :(得分:0)

好的,如果你有一个变量num来指示你想要的输出矩阵的数量(在这种情况下是4),试试这个:

B = cell(1, num);
B_size = size(A, 1) / num;

for i = 1:num
    B{i} = A((B_size * (i - 1) + 1):B_size * i, :);
end

B将是一个包含四个元素的单元格数组,相当于您对A1A4的想法。显然,不均匀划分列总数的num值不会很好。

答案 1 :(得分:0)

A = [ 1 2 3; 4 5 6; 7 8 9; 10 11 12; 13 14 15; 9 8 7; 8 7 6; 7 6 5];
for ii = 1:(length(A)/2)
    eval(['A' num2str(ii) '=A(' num2str(2*ii-1) ':' num2str(2*ii) ',:)'])    
end

解决方案使用eval。 'A'num2str(ii)对应于A1,A2,A3和A4。 for循环从1到4(长度(A)/ 2 = 4)

答案 2 :(得分:0)

不是定义不同的变量A1A2,......,最好像这样重塑原始矩阵A

A = permute(reshape(A, [2 size(A,1)/2 size(A,2)]), [1 3 2]);

现在A(:,:,1)A(:,:,2),...对应您所需的变量A1A2,...