这个矩阵乘法在MATLAB中有意义吗?
我的特定应用程序要求我执行以下操作:这个矩阵乘法在MATLAB中有意义吗?,matlab,matrix,Matlab,Matrix,我的特定应用程序要求我执行以下操作: 对张量的一块板进行SVD分解(我们称之为大小为[Nr,Nt,Nsub]的张量F) 获取此板的正确奇异矩阵(称之为矩阵V) 将板与右奇异矩阵的子集相乘 将结果乘以另一个向量(s,维度nx1) 我的问题是:这个矩阵乘法有什么意义吗,或者我做了什么错事,因为我有一个隐含性,一个三维矩阵乘以一个二维矩阵。。。换句话说,我是否覆盖了值 如果我的问题不清楚,我可以编辑它。。谢谢。您没有覆盖值,但是您应该在循环之前预先分配Y。这是否合理取决于数据的含义。感谢您的回复,
- 对张量的一块板进行SVD分解(我们称之为大小为[Nr,Nt,Nsub]的张量
)F
- 获取此板的正确奇异矩阵(称之为矩阵
)V
- 将板与右奇异矩阵的子集相乘
- 将结果乘以另一个向量(
,维度s
)nx1
如果我的问题不清楚,我可以编辑它。。谢谢。您没有覆盖值,但是您应该在循环之前预先分配
Y
。这是否合理取决于数据的含义。感谢您的回复,预分配意味着什么?你能给我举个例子吗?你的意思是初始化Y=0(Nr,Nlayer)?谢谢你@Crisluengo是的,就是这样。我在你的代码里没看到。预分配并不是绝对必要的,但会加快代码的速度。不过,在这种情况下,可能需要它?谢谢你,克里斯。我一定可以查一下。还有一个问题,我希望你能进一步帮助我。你看,我不久前就写了这个问题,它的想法非常相似:我得到的答案是,我在上一个问题中所做的是错误的,我想知道我在这里所做的为什么是正确的,但在我的上一个问题中,我覆盖了@克里斯卢恩戈。。多谢各位/
for k=1:size(F,3)
H= squeeze(F(:,:,k));
[U,Sigma,V]= svd(H);
V= V(:,1:n);
Y(:,k) = H * V* s;
end