1

我有两个向量RC,它们分别具有我需要在一个矩阵I (40x20) 中组装的子矩阵的行数和列数。总共有 12 个子矩阵。

R = [4     2     4     4     2     4];
C = [4    16    16     4];

此外,每个子矩阵的所有元素的值都存储在向量k中:

k = [3 2 3 3 2 3 2 1 2 2 1 2 2 1 2 2 1 2 3 2 3 3 2 3 ]; % 24 elements

因此,例如,子矩阵M (1:4,1:4) 有 4 行和 4 列,并且值等于 k(1) = 1。

问题:如何将矩阵 M 与所有子矩阵组合在一起?

有任何想法吗?谢谢!

编辑

矩阵 M 应如下所示: 在此处输入图像描述

和子矩阵:

在此处输入图像描述

和 k 的值:

在此处输入图像描述

4

1 回答 1

1

这是一个矢量化的解决方案:

R1 = repelem(1:numel(R), R);
C1 = repelem(1:numel(C), C);
[CC RR] = meshgrid(C1, R1);
idx = sub2ind([numel(R), numel(C)], RR, CC);
result = k(idx);

相反,您可以使用元胞数组,用子矩阵填充它,然后将元胞数组转换为矩阵。

carr = cell(numel(R), numel(C));
k1 = reshape(k,numel(R),numel(C));
for ii = 1:numel(R)
    for jj = 1:numel(C)
        carr(ii,jj)=repmat(K1(ii,jj), R(ii), C(jj));
    end
end
result = cell2mat(carr)
于 2017-02-16T21:54:30.683 回答