我有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];
所以第一个更大的矩阵必须具有以下配置:
红色数字是较大矩阵中的新行和列,导致K
:
如何以这种方式将较小矩阵的值插入较大的矩阵?
答案 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
通过添加user
和smallMats
,可以轻松将其扩展为更多矩阵。