这两个矩阵为何不相等?

时间:2018-07-26 22:18:48

标签: arrays matlab

假设我们有一个3维数组F和2维矩阵S。 首先,我找到一个矩阵YF乘以S。然后,我尝试从F中找到F_est的估计值(简称为Y)作为代码中的健全性检查。 谁能看到逻辑上的缺陷,但我似乎不知道为什么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吗?

1 个答案:

答案 0 :(得分:2)

创建Y时,将连续替换其值。对于i,k对中的任何值,您将覆盖Y j次!

这两个代码并不等效,因为F_est(i,j,k)仅计算一次,但是您有Y(i,k) j次。

我不知道您要做什么,但是未定义3D矩阵与2D矩阵的乘法,并且它不是2D矩阵