MATLAB与C/C++中的一些文件操作

  在做实验室里那个CUDA项目期间,为了验证结果使用了matlab和C/C++中的一些文件操作。在此记录一些matlab相关的输入输出函数以便日后查阅。

  读txt:

1
data = textread('data.txt');

  读excel:

1
data = xlsread('data.csv');

  需要注意的是matlab默认的输出精度为6位有效数字。为了保证数据处理的精度,需要指定输出格式如下:

  打开文件:

1
2
3
4
5
fid = fopen('data.txt','w');//写
for i=1:3000
str = num2str(Data(i),'%.15f');
fprintf(fid,'%s\n',str);
end

  如此便将小数点后15位精度的数写入txt文件了。

  读bin文件:

1
2
file = fopen('data.bin');
Data = fread(file,NUMBER,'double');//数据格式为double时

C++:
  C/C++中的默认输入输出宽度依然为6位有效数字,可以使用setprecision设置其精度
  需要引入头文件 #include

输入:
1
2
3
4
5
6
7
8
9
10
11
ifstream inFile2("D:\\t1.txt");//inFile来自fstream,ifstream为输入文件流(从文件读入)
string line2;
while (getline(inFile2, line2)) //getline来自sstream
{<br/>
stringstream ss;
ss << fixed << setprecision(15) << line2;//格式控制
long double a;
ss >> a;
timeArray.push_back(a);
//cout<<fixed<<setprecision(15)<<a<<endl;
}
输出时:
1
2
3
ofstream outFile; //输出文件流(输出到文件)
outFile.open("D:\\statis1sin.txt", ios::out);//打开模式可省略
outFile << fixed << setprecision(15)<<ans1[j] *5 << endl;

  顺带记一下C++计时的方法吧,使用#include
1
2
3
4
clock_t start,end;
start = clock();
end = clock();
cout << "total:" << (double)(endtime - starttime) / CLOCKS_PER_SEC << "s" << endl;