我有一个矩阵m数组,这样
m1 = [1 2;3 4];
m2 = [2 7; 8 9];
m3 = [9 7; 8 91];
m = [m1 m2 m3]
m =
1 2 2 7 9 7
3 4 8 9 8 91
我也有一个载体
v = [1 2 3];
这样我希望v和m之间的操作导致h
h = [1*m1 2*m2 3*m3] = [h1 h2 h3];
我想我必须在h
的三维数组中执行此操作,这是一个3d数组。或者也许有更好的方法。
设A是一个简单的2乘2矩阵rand(2,2)
。
从h
我想要提取h1
h2
和h3
(或者最好不要进行任何提取)并对A
执行操作,以便
1
h1*A*h1'
h2*A*h2'
h3*A*h3'
和
2
h1*h1', h2*h2', h3*h3'.
为什么我想在数组中这样做是因为我有很多矩阵mi所以我想通过矢量化来避免循环。
答案 0 :(得分:0)
从我可以理解的问题来看,我认为元素乘法将是更好的选择。你只需要使用适当的连接和重复矩阵。
m1 = [1 2; 3 4];
m2 = [2 7; 8 9];
m3 = [9 7; 8 91];
% Concatenate to create 3D matrix
m = cat(3,m1,m2,m3);
v = [1 2 3];
% Create similar 3D matrix
v1 = cat(3,ones(size(m1))*v(1),ones(size(m2))*v(2),ones(size(m3))*v(3));
% Simple element wise multiplication
h = m.*v1;
% Creating a repeated 3D matrix A, repetation is along third dimension
A = repmat(rand(2,2),[1 1 3]);
% Outputs
op_1 = h.*A.*permute(h,[2 1 3]);
op_2 = h.*permute(h,[2 1 3]);