PATHNAME = 'C:\Users\s55\Desktop\dat';
FILENAME = '\data_1.dat';
str0=strcat(PATHNAME,FILENAME);
%或者str0=fullfile(PATHNAME,FILENAME);
然后用fread或者memmapfile打开
[FILENAME, PATHNAME] = uigetfile('C:\Users\s55\Desktop\dat\*.dat', '打开数据文件');
%选择文件
str0=strcat(PATHNAME,FILENAME);
PATHNAME = 'C:\Users\s55\Desktop\dat';
files = dir(strcat([PATHNAME '\' ],'*.dat'));
for filenum = 1:length(files)
FILENAME=files(filenum).name;
str0=strcat(PATHNAME, '\',FILENAME);
......
end
其中,read_length_start是读取文件的起始位置(按字节数),[read_length,1]是读取的文件size
PATHNAME = 'C:\Users\s55\Desktop\dat';
FILENAME = '\data_1.dat';
str0=strcat(PATHNAME,FILENAME);
a0 = memmapfile(str0,...
'Offset', read_length_start - 1 ,...
'Format',{'int16',[read_length,1],'x'},'repeat',1);
rdm_data = a0.Data.x;
memmapfile功能及输入参数详解:
m = memmapfile(filename) 将现有文件 filename 映射至内存,并返回内存映射 m。
PATHNAME = 'C:\Users\s55\Desktop\dat';
FILENAME = '\data_1.dat';
str0=strcat(PATHNAME,FILENAME);
fid = fopen(str0,'r'); % 使用 fread 读取文件之前,必须用 fopen 打开文件并获取 fileID
fread功能及输入参数详解:
A = fread(fileID,sizeA,precision,skip,machinefmt)
[A,count] = fread(___) 还将返回 fread 读取到 A 中的字符数。
利用fread读取数据文件时的注意事项:
[tempdata,cnt]=fread(fid,4,'uint8');
[tempdata2,cnt2]= fread(fid, HEAD);
[tempdata3,cnt3]= fread(fid,length/2,'int16','ieee-be');
%[tempdata2,cnt2]= uint8(fread(fid, HEAD));
%[tempdata3,cnt3]= int16(fread(fid,length/2,'int16','ieee-be'));
fid是文件标识符,这三行代码的意思是,
读取列向量维度为4、源数据类型为uint8的数据,即tempdata
接在后面,读取列向量维度为HEAD、源数据类型为uint8、输出类型为double的数据,即tempdata2
接在后面,读取列向量维度为length/2、源数据类型为int16、输出类型为double、字节顺序为大端序的数据,即tempdata3
frame_filename = strcat([ 'frame',num2str(numframe),'.mat']);
save(strcat([PATHNAME,'\frame\',frame_filename]),'dataADC', 'dataCAM', 'type', '-v6');
%存储在PATHNAME\frame中的文件,名为frame_filename,包含多个内容,包含dataADC、dataCAM、type
save(strcat([PATHNAME,'\frame\',frame_filename]));
%将workspace的所有值都保存到指定路径,名字为frame_filename
fwrite(fileID,A) 将数组 A 的元素按列顺序以 8 位无符号整数的形式写入一个二进制文件。
该二进制文件由文件标识符 fileID 指示。使用 fopen 可打开文件并获取 fileID 值。
完成写入后,请调用 fclose(fileID) 来关闭文件。
示例
fwrite(fileID,A,precision) 按照 precision 说明的形式和大小写入 A 中的值。
fwrite
将随机的双精度数值写入名称为 myfile.bin 的文件,以便在 big-endian 系统上使用。
fileID = fopen('strcat([PATHNAME,frame_filename])','w');
fwrite(fileID,rand(4),'double','ieee-be');
fclose(fileID);