【发布时间】:2018-09-24 18:56:33
【问题描述】:
我有 n 长度为 p 的复数向量,我想乘以 n 大小为 p-by-p 的复数矩阵。我正在寻找在 MATLAB 中执行此操作的最有效方法。如果重要的话,我想象 n 很大,p 很小。
一个使用循环的例子(我想避免)如下所示。
N = 1e4;
p = 5;
A = randn(p, N); % N vectors of length p
B = randn(p, p, N); % N matrices of size pxp
C = zeros(p, N);
for k = 1:N
C(:, k) = B(:, :, k) * A(:, k);
end
有人建议我可以使用张量函数有效地实现这一点,但我无法弄清楚。
【问题讨论】:
-
查看相关问题(以及我对此的评论)here。
-
感谢 Dev-iL,这真的很有帮助。我能够使用 MTIMESX 来处理事情(在这个例子中它要快得多)。然而,一般来说,矩阵/向量会很复杂,我的理解是 MTIMESX 和 MMX 对复数的表现要差得多。您知道解决方法吗?
-
欢迎来到本站!很好的第一个问题
-
GitHub 上有一个贡献者试图添加一些 limited support for complex matrices(但是,如果您使用的是 R2018a 或更高版本,则无法使用)。我想如果你坚持使用这些库,它会迫使你分别传递实部和虚部(例如:
mmx(real_x, real_y) - mmx(imag_x, imag_y) + 1i *( mmx(real_x, imag_y) + mmx(imag_x, real_y) ))——与Luis' answer相比,这可能效率低下。
标签: matlab matrix matrix-multiplication complex-numbers tensor