matlab - matlab 中 diag(X'*C*X) 的替代方法

标签 matlab matrix vectorization matlab-deployment

考虑一个 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/

相关文章:

user-interface - 如何在 MATLAB gui 中将复选框设置为 true?

matlab - 合并元胞数组 Matlab 的列

matlab - 创建一个矩阵 A(i, j) = i*j

java - 在 RStudio 中使用 RWeka M5P 会产生 java.lang.NoClassDefFoundError : no/uib/cipr/matrix/Matrix

python - 将 math.erf 应用于数组

matlab - 检测时间扩散回波

ios - Objective-C - 使用 Accelerate.framework 对两个矩阵进行逐元素加法(和除法)

matlab - 生成已知维度的空矩阵

c++ - AVX 循环矢量化错误

Python 将类方法应用于数据框的行