我正在尝试将精度矩阵 sigmaT 转换为协方差矩阵。我尝试了两种方法:
covMat = zeros(size(sigmaT));
for i=1:t
covMat(:, :, i) = eye(D)/sigmaT(:,:,i);
end
和
covMat = bsxfun(@rdivide, eye(D), sigmaT);
sigmaT 中的某些元素为零,因此会发生除以零。第一种基于循环的解决方案将发生被 0 除的元素保留为 0,第二种方法将元素设置为 NaN。
我的问题是:为什么它们的行为不同,我怎样才能将第二种单行方法更改为基于循环的方法?我相信后一种解决方案在大型矩阵上应该明显更快。