MATLAB中文件读写

r 读出

w 写入(文件若不存在,自动创建)

r 以只读方式打开文件,该文件必须存在。

  r+ 以可读写方式打开文件,该文件必须存在。

  rb+ 读写打开一个二进制文件,只允许读写数据。

  rt+ 读写打开一个文本文件,允许读和写。

  w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。

  w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。

  a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。(EOF符保留)

  a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。 (原来的EOF符不保留)

  wb 只写打开或新建一个二进制文件;只允许写数据。

  wb+ 读写打开或建立一个二进制文件,允许读和写。

  wt+ 读写打开或着建立一个文本文件;允许读写。

  at+ 读写打开一个文本文件,允许读或在文本末追加数据。

  ab+ 读写打开一个二进制文件,允许读或在文件末追加数据。

  上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。不过在POSIX系统,包含Linux都会忽略该字符。由fopen()所建立的新文件会具有S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)权限,此文件权限也会参考umask 值。

文件的存储格式:文件打开的默认方式是:二进制。以文本方式打开,可以在方式参数“permission”中加入“t”文件将,如“rt”,“wt+”

 

1 写入文件

数据的格式化输出:fprintf(fid,format,variables)

fid为文件句柄,若缺省,则输出到屏幕

format用来指定数据输出时采用的格式

%d 整数

%e实数:科学计算法形式

%f实数:小数形式

%g由系统自动选取上述两种格式之一

%s输出字符串

写入16进制、10进制(只能写入无符号整数)

一般来说MATLAB的数据为十进制矩阵(这里举例为一维矩阵),保存为16进制时如下代码所示,保存为10进制时则改

fprintf(fp,'%d,',soc_data(i));

soc_data = [12 13 14 15 20 22 23 25];
%soc_data1 = dec2hex(soc_data);%转换为16进制后将变成矩阵
%soc_data1 = dec2bin(soc_data);%转换为2进制后将变成矩阵
fp=fopen('E:\data.txt','wt');
for i=1:8
fprintf(fp,'%x,',soc_data(i));%打开文件后就相当于C语言的输出函数,每次输入一个数,8bit长度
fprintf(fp,'\n');%换行
end
fclose(fp);
a=0;

写入2进制文件:

可设定写入长度,高位补0

soc_data = [12 13 14 15 20 22 23 25];
soc_data1 = dec2bin(soc_data);%转为2进制时变成矩阵
fp=fopen('E:\data.txt','wt');
for i=1:8
fprintf(fp,'%08s,',soc_data1(i,:));%打开文件后就相当于C语言的输出函数,每次输入一个数,8bit长度
fprintf(fp,'\n');%换行
end
fclose(fp);
a=0;

 

2.读取文件

 

读取二进制

00001100
00001101
00001110
00001111
00010100
00010110
00010111
00011001

fid=fopen('E:\data.txt');
data=fscanf(fid,'%s');
fclose(fid);

读取结果为:1x64;'0000110000001101000011100000111100010100000101100001011100011001'

或者

indata=textread('E:\data.txt','%s');
b=bin2dec(indata);

此时读取结果为 8x1:

00001100
00001101
00001110
00001111
00010100
00010110
00010111
00011001

读取 16进制文件(不带0x,没有逗号): 

TXT数据:

c
d
e
f
14
16
17
19

或者:c  d  e  f  14  16  17  19 

[1,8]表示读取的数目

fid=fopen('E:\data.txt');
data=fscanf(fid,'%x',[1,8]);
fclose(fid);

读取 10进制文件: 

TXT:12  13  14  15  20  22  23  25 

或者

12
13
14
15
20
22
23
25

fid=fopen('E:\data.txt');
data=fscanf(fid,'%d',[1,8]);
fclose(fid);

 

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值