MATLAB笔记:打开数据文件的三种方法+读取数据文件的两种方法+保存数据文件的两种方法

1、打开数据文件

1.1 直接打开文件

PATHNAME = 'C:\Users\s55\Desktop\dat';
FILENAME = '\data_1.dat';
str0=strcat(PATHNAME,FILENAME);
%或者str0=fullfile(PATHNAME,FILENAME);
然后用fread或者memmapfile打开

1.2 弹出窗口选择文件

[FILENAME, PATHNAME] = uigetfile('C:\Users\s55\Desktop\dat\*.dat', '打开数据文件');
%选择文件
str0=strcat(PATHNAME,FILENAME);

1.3 批量处理文件夹中的文件

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

2、 读取数据文件

2.1 用memmapfile读取数据文件

其中,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。

在这里插入图片描述

2.2 用fread读取文件

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

3、保存数据

3.1 用save保存数据

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

3.2 用fwrite保存数据

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);
  • 7
    点赞
  • 58
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值