首页 > 解决方案 > 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在任何情况下实际上有用吗?为什么这么慢?

标签: matlab

解决方案


我想补充一些历史观点:

在 R2018a 之前的 MATLAB 版本中,复数在内部存储在单独的实数和虚数数组中。因此, 的结果complex可能只是指向两个输入数组的数据。因此,与实际需要进行算术运算和创建新的内存存储complex(a,b)相比,它非常快速且内存效率高。a+1i*b

在当前版本的 MATLAB 中,复数数据以“交错格式”存储,这意味着它是一个数组,每个数组元素的实数值和复数值彼此相邻。这意味着数据需要以任何一种格式复制,complex已经失去了它的价值。


推荐阅读