matlab文件IO(读取写入)2 低级例程

时间:2022-03-23 21:34:31

参考MATLAB基础与编程入门  张威编  西安电子科技大学出版社  第5章

 1. 读写data的低级I/O函数

matlab文件IO(读取写入)2 低级例程

function [data count]=txtio_examp
%TXTIO_EXAMP文本文件的格式化输入输出
%open 一个.txt文件 写入data
[fid msg]=fopen('0513.txt','wt');
if fid==-1
disp(msg);
return;
end
%写入data
fprintf(fid,'%s\n','文本文件格式化输入输出示例');
fprintf(fid,'%i\t%i\t%i\n',[1 2 3;4 5 6;7 8 9]);
%关闭文件
fclose(fid);
%打开文本文件读入data
fid=fopen('0513.txt','rt');
if fid==-1;
disp(msg);
return;
end
%ReadData
title=fgetl(fid); %读取文本文件的一行数据,不包含文本的结束符(字符串) fgets是指包含文本的结束符
disp(title);
data=fscanf(fid,'%i');
data=reshape(data,3,3);
%close文件
fclose(fid);

2.二进制文件读写示例(编写信息必须与数据文件内容保持一致,否则读入的数据会有误)

function [data,count,status]=binio_examp
%BINIO_EXAMP二进制文件读写示例
%open a binary 文件读写示例
fid=fopen('magic5.bin','wb');
% fwrite(fid,'%s\n','');
count=fwrite(fid,'文本文件格式化输入输出示例','int32');
fwrite(fid,[1 2 3;4 5 6;7 8 9],'int32');
status=fclose(fid);
fid=fopen('magic5.bin','rb');
S=fread(fid,count,'int32'); %不能少
disp(['读取数据类型:',class(S)]);
disp(['读取数据内容:',class(S')]);
[data count]=fread(fid,[3,3],'int32');
data=reshape(data,3,3);
status=fclose(fid);

3.num2str()

函数功能:将数值转换成字符串,转换后可以使用fprintf或disp函数进行输出。


4.文件位置指针函数示例

% function [pos,status]=pos_examp
%POS_EXAMPLE文件位置指针示例
%创建文件
fid=fopen('testdata.dat','wb');
x=1:10;
fwrite(fid,x,'short'); %short占据2个字节
fclose(fid);
%打开数据文件
fid=fopen('testdata.dat','rb');
%获取当前的文件指针位置
pos=ftell(fid); %ftell获取当前文件位置指针的位置
disp(['当前的文件位置指针:',num2str(pos)]);
%向文件尾部移动文件指针6个字节
status=fseek(fid,6,'bof');
%读取数据
four=fread(fid,1,'short');
disp(['读取的数据:',num2str(four)]);
%获取当前的文件指针
pos=ftell(fid);
disp(['当前的文件位置指针:',num2str(pos)]);
%从当前的位置向文件头部移动指针4个字节
status=fseek(fid,-4,'cof');
%获取当前的文件指针
pos=ftell(fid);
disp(['当前的文件位置指针:',num2str(pos)]);
%读取数据
three=fread(fid,1,'short');
disp(['读取的数据:',num2str(three)]);

5. 文件导入向导【不怎么会用,没实现书上的例程】

分隔符:    逗号(Comma), 空格符(Space), 分号(Semicolon), 制表符(Tab), 自定义(Other).