最近,需要验证c与matlab进行的同一个下变频,下采样操作结果是否一致,于是,需要将c处理后的数据存储下来,在matlab读取,发现自己对c读取文件的操作并不是很熟悉,于是,对此,进行一番总结。

在vs里面随机生成100个float数据,然后存为dat文件,最后在matlab端进行读取;
vs

#include<iostream>
#include<ctime>
#include<string>
using namespace std;

int main()
{
   
	//生成随机float
	srand((float)time(0));
	float *num = new float[100];
	for (int i = 0; i < 100; i++)
		num[i] =((float) rand())/10000;
	for (int i = 0; i < 100; i++)
	{
   
		if (i % 10 == 0)
			cout << endl;
		cout << num[i] << " ";
	}

	//存储
	FILE *f_float = NULL;
	errno_t err;
	string filename = "D:/visualStudio/FILE_storedat/" + to_string((int)1000) + ".dat";
	err = fopen_s(&f_float, filename.c_str(), "wb");
	if (err != 0) {
   
		printf(" Open failed\n");
		return 1;
	}
	else
		printf(" Open success\n");
	fwrite(num,sizeof(float),100, f_float);
	fclose(f_float);


	return 0;
}

matlab

clc;clear;close;

fid=fopen('1000.dat','rb');
data=fread(fid,'float')
fclose(fid);


可以看出,结果一样;

了解到,c++可以通过fstream来读取文件,以后再来进行补充