今天遇到一个问题,有一个4333*1的**complex double 矩阵**,进行相关运算时候,发现matlab运行出不来结果,于是就开始着手解决这个问题,后来参考很多资料,总结了两种方案,比较得出第二种方案更佳:
首先思路都是先将这个变量矩阵保存为.dat的文件,然后下次用到时候再引用出来。用到语句是:
fid_r=fopen('test_111.dat','w'); %创建文件test_111.dat
fwrite(fid_r,rc_e,precision); %将rc_e变量写入fid_r,即存入变量test_111.dat中
fid_r=fopen('test_111.dat','r');%读数据文件
data_real = fread(fid_r,Nr,precision);%将数据文件test_111.dat写入data_real
1.一开始为了图省事,我把这个complex矩阵存到一个dat文件中,但是后面在for循环中调用时候,又会运行很慢! 这里面在存储dat文件时候,需要调用一个Des_conv函数,下面会说到。
2.另一种思路,把complex数据分成实部,虚部存到两个dat文件中,后面for循环用到时候也是先分别调用出来,再用y=data1+j*data2的形式构建原来complex数据。这样效率大大提高了! 当然在存储时候,也用到了Des_conv函数。
【Des_conv函数】:在size比较大的复数矩阵存储时候,如果直接存储会偶尔出错,并且每运行一次就有一次新结果