Is there a faster complex exponent?
9 次查看(过去 30 天)
显示 更早的评论
Is there any way to more quickly evaluate complex exponentials, i.e:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1570122/image.png)
where Q is a real array? Quick numerical tests show that complex input noticeably slows down MATLAB's exp function.
Several thoughts:
- Some libraries, such as Julia Base, provide a cis/cisoid function that directly evaluates the Euler expansion.
- The GNU C library has sincos function that simultaneously evaluate sine and cosine more quickly than separate calls.
- The Fixed Point Designer has a cordicexp function that seems to be identical to cis, but I don't have this toolbox. No idea how this performs compared to the standard exp function.
11 个评论
Paul
2023-12-15
编辑:Paul
2023-12-16
FWIW, Simulink offers a sincos and cos + jsin functions (Trigonometric Function), with options for how those functions are computed (Algorithm - Approximation Method). Don't know if the "under the hood" Simulink implementation would offer any performance benefits if brought into Matlab proper.
Bruno Luong
2023-12-15
But again I'm not convice MATLAB is NOT already do specific acceleration for exp(1i*Q). It is faster than cos alone on my PC and Walter PC as well
采纳的回答
更多回答(1 个)
Sulaymon Eshkabilov
2023-12-15
Let's compare two ways e.g.:
Q = linspace(-10, 10, 1e6);
tic;
CQ1 = exp(1i*Q);
T1 =toc
tic;
CQ2 = cos(Q)+1i*sin(Q);
T2 =toc
fprintf('Calc time of exp(1i*Q): %f; cos(Q)+i*sin(Q): %f; \n', [T1, T2])
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Loops and Conditional Statements 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!