Arrays 为什么这两个矩阵不相等?
假设我们有一个三维数组Arrays 为什么这两个矩阵不相等?,arrays,matlab,Arrays,Matlab,假设我们有一个三维数组F和二维矩阵S。 首先我找到一个矩阵Y,它是F乘以S。然后我尝试从Y中找到F的估计值(我们称之为F_est),作为我代码中的健全性检查。 任何人都能看到逻辑上的缺陷,我似乎不知道为什么F_est不完全是F F= randn(2,4,600); S= randn(4,600); for i =1:size(F,1); for j=1:size(F,2) for k= 1:size(F,3) Y(i,k)= F(i,j,k) *
F
和二维矩阵S
。
首先我找到一个矩阵Y
,它是F
乘以S
。然后我尝试从Y
中找到F
的估计值(我们称之为F_est
),作为我代码中的健全性检查。
任何人都能看到逻辑上的缺陷,我似乎不知道为什么F_est
不完全是F
F= randn(2,4,600);
S= randn(4,600);
for i =1:size(F,1);
for j=1:size(F,2)
for k= 1:size(F,3)
Y(i,k)= F(i,j,k) * S(j,k);
end
end
end
for i =1:size(F,1)
for j=1:size(F,2)
for k= 1:size(F,3)
F_est(i,j,k)= Y(i,k) / S(j,k);
end
end
end
然后我试着看看F_est-F是否为零。任何想法。非常感谢
****评论后编辑
根据我得到的答案,我想知道下面的代码是否有意义
for k=1:size(F,3)
Y(:,k) = squeeze(F(:,:,k)* S(:,k)
end
如果我有Y和S,我是否能够恢复F?当您创建
Y
时,您将不断替换其值。对于i,k
对的任何值,您正在覆盖Y
j
次
这两个代码并不相等,因为F_est(i,j,k)
只计算了一次,但您有Y(i,k)
j
次
我不知道你想做什么,但是3D矩阵与2D矩阵的乘法没有定义,也不是2D矩阵你能举个数字例子吗?谢谢@AnderBiguri,所以这部分更大的代码我有mat文件输入
F
和S
,但我用randn编辑了这个问题,我的奇怪观察仍然成立如果“非零”在1e-12左右:@AndrasDeak这不是关于你的更新:不。我的意思是你仍然无法从Y
获得F
,因为矩阵积不能那么容易地反转。你的意思是Y
只包含二维平面F(:,size(F,2),:)
的信息,所以F
的其余部分无法恢复。@CrisLuengo确实如此。这只是糟糕的数学,你不能把这些东西相乘,技术上你可以。这并不意味着什么@谢谢你!我编辑了这个问题。你能帮我完成最后一部分吗?@Tyrone你需要摆脱代码,回到纸上。你不能创建Y,所以不,你不能恢复F。停止尝试随机代码。如果您需要帮助,我建议您打开一个新问题,解释您要解决的真正问题,而不是您尝试的代码。