【发布时间】:2015-11-13 21:39:06
【问题描述】:
我正在尝试编写没有循环的 Tyler 鲁棒协方差估计:
这是我当前的实现:
- x 是大小为 [nxb] 的样本向量
- cov 是大小为 [bxb] 的协方差矩阵
- oldCov 是前一次迭代的协方差矩阵。它也是一个 [bxb] 矩阵
这是当前的实现:
invCov = pinv(oldCov);
for i = 1:n
cov = cov + x(i,:).'*x(i,:)/sum(x(i,:)*invCov.*x(i,:),2);
end
现在这是我的问题:
- 是否可以在没有循环的情况下对其进行矢量化?
-
我有兴趣尝试通过使用其他后处理技术来进一步提高估计的稳健性。为此,最好结果不是总和,而是一个大小为 [bxbxn] 的向量“covElements”,每个
covElements(:,:,i) = x(i,:).'*x(i,:)/sum(x(i,:)*invCov.*x(i,:),2);
谢谢。
【问题讨论】:
-
我认为您在
invCov之前的代码中缺少转置 -
其实 x(i,:) 的大小是 [1,b] 而 invCov 的大小是 [b,b] 这样代码就可以正常运行了。
-
啊,是的,没有看到 invcov 之后的点——现在我知道你要做什么了
标签: matlab vectorization