考虑一个 N x 1 向量 x 和一个 N x N 矩阵 C。我想评估
s = x'*C*x;
在 matlab 中对于向量 x 的许多采样,例如将 x 的 M 个样本视为 N x M 矩阵 X;这可以使用
来完成S = diag(X'*C*X);
但这是一个糟糕的解决方案,因为在此过程中分配了 M x M 矩阵,并且当 M>1e5 时,这会中断。是否有一些 matlab 功能可以建议替代方案?
最佳答案
执行正确的矩阵乘法C*X
,然后执行元素乘积,这样就不会执行不必要的操作:
S = sum(X.*(C*X),1)';
如果您的矩阵是复数值,您还需要共轭:
S = sum(conj(X).*(C*X),1).';
关于matlab - matlab 中 diag(X'*C*X) 的替代方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43507618/