通过用户输入将元素从较小的矩阵分配到较大的矩阵

时间:2017-11-08 16:11:03

标签: matlab matrix

我有3个较小的矩阵(在多维数组中),所有这些都是4x4。我想为每个较小的矩阵构建一个更大的矩阵(8x8),但根据用户矩阵输入,将较小矩阵的每个元素的位置重新排列到较大矩阵中的新位置:

例如,我有这3个小矩阵:

A=repmat(1, [4 4]);
B=repmat(2, [4 4]);
C=repmat(3, [4 4]);

和更大的K=zeros(8);。用户输入矩阵就是这个:

user=[1 2 7 8; 3 4 1 2; 3 4 7 8];

所以第一个更大的矩阵必须具有以下配置:

enter image description here

红色数字是较大矩阵中的新行和列,导致K

enter image description here

如何以这种方式将较小矩阵的值插入较大的矩阵?

2 个答案:

答案 0 :(得分:0)

目前尚不清楚为什么需要这个,但这是我认为的解决方案。

K = zeros(8,8);
for ii=1:4
    for jj=1:4
       K(user(1,ii),user(1,jj)) = A(ii,jj);
       K(user(2,ii),user(2,jj)) = B(ii,jj);
       K(user(3,ii),user(3,jj)) = C(ii,jj);
    end
end

答案 1 :(得分:0)

您可以通过使用user行作为K的行和列索引来轻松完成此操作,如下所示:

K(user(1, :), user(1, :)) = A;

如果你想迭代每个较小的矩阵和用户输入,将它们全部插入到相同的较大矩阵K中,我首先将较小的矩阵放入单个cell array中,然后重复以上for loop

smallMats = {A, B, C};
K = zeros(8);
for row = 1:size(user, 1)
  K(user(row, :), user(row, :)) = smallMats{row};
end

通过添加usersmallMats,可以轻松将其扩展为更多矩阵。