1)提取子矩阵,2)矢量化然后3)放回

时间:2015-08-03 11:09:41

标签: matlab matrix

我简化了我的问题,我说我有三个矩阵。

enter image description here

我想提取红盒子矩阵。我定义了

S = [1 4;
     2 5]

是上述矩阵的线性指数。因此,A(S), B(S)C(S)可以提取三个矩阵的条目。

我按V = [ A(S)(:); B(S)(:); C(S)(:) ]将它们打包到矢量中。让我们说一些操作后,我获得了一个新的载体

V_new = [12 9 8 12 21 8 7 5 3 12 11 10]'

这就是我的问题:

对于矩阵A,我想获得

2->12, 5->9, 4->8 and 6->12

这是我V_new的前四个条目。

由于我有大约200个矩阵,我不知道同时交换200个矩阵和更新的向量V_new。是否正在编写for-loop最佳方法来实现此目的?

提前致谢。

1 个答案:

答案 0 :(得分:2)

假设您的ABC矩阵具有相同的维度,而是使用3D矩阵。

e.g。假设您的示例矩阵

M = cat(3,A,B,C)

不提取那4个左上角的元素:

M_subset = M(1:2,1:2,:)

然后将它们重塑为你拥有的矢量:

V = M_subset(:)

然后操纵它以获得V_new并最终将其放回原始版本中:

M(1:2,1:2,:) = reshape(V_new,2,2,[])