gpt4 book ai didi

matlab - 计算列的所有排列的函数

转载 作者:太空宇宙 更新时间:2023-11-03 20:10:08 24 4
gpt4 key购买 nike

我有这个代码:

abs(mean(exp(1i*( a(:,1) - a(:,2) ))))

其中 a 是一个 550×129 双矩阵。我如何使用该代码编写代码以将 a(:,1) 替换为 a(:,2) 然后 a(:,3) 等等,因为我需要每一列都从其他每一列中减去?

最佳答案

另一种使用矩阵乘法的方法:

E = exp(1i*a);
result = abs(E.'*(1./E)/size(E,1));

解释:

你可以重写表达式

exp(1i*( a - b) ))

作为

exp(1i*a)/exp(1i*b)

所以

exp(1i*a)*(1/exp(1i*b))

mean(x)sum(x)/n

使用它,您可以使用非常快速的矩阵乘法来完成您的任务。

Octave 中不同方法的比较结果:

Matrix Multiplication:
Elapsed time is 0.0133181 seconds.

BSXFUN:
Elapsed time is 1.33882 seconds.

REPMAT:
Elapsed time is 1.43535 seconds.

FOR LOOP:
Elapsed time is 3.10798 seconds.

Here是比较不同方法的代码。

关于matlab - 计算列的所有排列的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44749880/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com