matlab - Matlab的“复杂”功能有什么意义?
问题描述
c=complex(a,b)
在 matlab 中比做c=a+1i*b
.
以下是在 Matlab 2018a 中
a=rand(15000);
b=rand(15000);
%
clear c;
tic; c=a+1i*b; toc
Elapsed time is 0.338525 seconds
%
clear c;
tic; c=complex(a,b); toc
Elapsed time is 2.542403 seconds.
complex
在任何情况下实际上有用吗?为什么这么慢?
解决方案
我想补充一些历史观点:
在 R2018a 之前的 MATLAB 版本中,复数在内部存储在单独的实数和虚数数组中。因此, 的结果complex
可能只是指向两个输入数组的数据。因此,与实际需要进行算术运算和创建新的内存存储complex(a,b)
相比,它非常快速且内存效率高。a+1i*b
在当前版本的 MATLAB 中,复数数据以“交错格式”存储,这意味着它是一个数组,每个数组元素的实数值和复数值彼此相邻。这意味着数据需要以任何一种格式复制,complex
已经失去了它的价值。
推荐阅读
- python - 创建简单的烧瓶错误应用程序来记录异常
- reactjs - Reactjs - 从数组中获取值
- javascript - 如何在 Electron 中运行 node postgres?
- twitter-bootstrap - Xpages 与 OneUI 和 Domino HCL 11 的兼容性问题
- c++ - Magick++ ``depth`` 的行为与 ``convert -depth`` 不同
- python - 为什么在 Python 中 filter(sorted(xs)) 比 sorted(filter(xs)) 快?
- java - Netbeans Java 中的预览设计不同于运行时设计
- pandas - 熊猫计数器作为新列
- python-3.x - ValueError:在 pytube 中解压的值太多(预期为 2)
- c++ - C++ 异常调用 _exit