提问人:Qasdew 提问时间:11/11/2023 更新时间:11/11/2023 访问量:58
将复杂向量保存和读取为二进制文件
Saving and Reading complex vectors as binary files
问:
我有一个随机生成的 MATLAB 大小为 N 的复向量(单向量,而不是双倍量),格式如下:
vec = [-3.2621543 + 2.7376063i, -1.2618964 - 1.0076348i, ....]
我将其保存为MATLAB中的.bin文件,如下所示:
filPath = 'test.bin';
vecReal = real(vec);
vecImag = imag(vec);
rWrite = reshape([vecReal; vecImag], 1, []);
fid = fopen(filPath, 'w');
fwrite(fid, rWrite,'float');
fclose(fid);
所以我在向量上调用以下格式的 fwrite:
rWrite = [-3.2621543, 2.7376063, ....]
我想将 test.bin C++ 读取为 std::vector<complex>我这样做的代码是:
int vectorSize = N; // The same N variable in MATLAB
std::vector<complex<float>> dataVector(vectorSize);
inputFile.read(reinterpret_cast<char*>(dataVector.data()), sizeof(float) * vectorSize);
inputFile.close();
但是我在 dataVector 中获得的值甚至不接近生成的 MATLAB 向量, 我得到以下值:
数据向量 = [-0.951752782 + 1.05218506i, -3.02577972 + 1.09116054i, ...]
我做错了什么?
我尝试读取一个二进制文件,其中包含以下格式的浮点变量的复杂向量:
a = [真实,图像,真实,图像,...]
但是在C++中阅读后我得到了不同的值。
答: 暂无答案
评论
complex<float>
vec