matlab读写.docx
- 文档编号:24517319
- 上传时间:2023-05-28
- 格式:DOCX
- 页数:20
- 大小:42.78KB
matlab读写.docx
《matlab读写.docx》由会员分享,可在线阅读,更多相关《matlab读写.docx(20页珍藏版)》请在冰豆网上搜索。
matlab读写
MATLAB二进制数据文件的读写
(2011-06-0419:
44:
27)
转载▼
标签:
easleyhux
matlab
二进制读写
杂谈
分类:
MATLAB
所谓二进制格式读写,个人认为其核心是“按指定数据类型大小读写内存”,所以其特殊之处应该在于读写时要指定数据类型。
实例:
clc;clearall;
%两个实数
data=[1.2345.678];
%先写文件
fid=fopen('ceshi.bin','w');
%设置好格式,并且写入
fwrite(fid,data,'float32');
fclose(fid);
%再读文件
fid=fopen('ceshi.bin','rb');
%设置好格式,并且读出来
data1=double(fread(fid,5,'*float32'));
fclose(fid);
disp(data)
disp(data1')
总结:
二进制格式读写文件,应该特别注意其数据类型、指定个数。
matlab要读入dat文件有字符标题,和很多数据,应该怎么读取?
2011-3-2520:
29
提问者:
526beyond|浏览次数:
1871次
我来帮他解答
输入内容已经达到长度限制
还能输入9999字
插入图片删除图片插入地图删除地图插入视频视频地图
参考资料:
匿名回答提交回答取消
2011-3-2608:
05
满意回答
使用textread函数可以跳过文件头
textread('name.dat','%f%f%f,','headerlines',1)
这样可以跳过1行多行的话可以把headerlines修改下,'%f%f%f,表示数据有三列都是浮点类型,根据实际写
追问
Numberofoutputsmustmatchthenumberofunskippedinputfields.
出现了这个,是怎么回事?
回答
输入输出列数要匹配
你看看textread的例子程序就知道了
追问
Numberofoutputsmustmatchthenumberofunskippedinputfields.
Errorin==>textreadat176
[varargout{1:
nlhs}]=dataread('file',varargin{:
});
完整的是这样的,麻烦你呢!
回答
例子3:
myfile.txt中的内容如下:
%thisacomment
1,2,3,4
5,6,7,8
9,10,11,12
相应的语句为:
filename='.myfile.txt';
[data1,data2,data3,data4]=textread(filename,'%n%n%n%n','delimiter',',','headerlines',1);
这里告诉textread跳过一开始的1行,1可以替换为任意你要跳过的行数。
例子4:
myfile.txt中的内容如下:
SallyLevel112.3445Yes
相应语句为:
filename='.myfile.txt';
[names,types,x,y,answer]=textread(filename,'%s%s%f%d%s',1)
4.1如果要忽略12.34这个浮点数。
[names,types,y,answer]=textread(filename,'%s%s%*f%d%s',1)
参考资料:
赞同
1
|评论
向TA求助
回答者:
大海jianfei来自团队其他编程语言|五级采纳率:
40%
擅长领域:
C#/.NET其他编程语言校园生活数学数据库
参加的活动:
暂时没有参加的活动
fopen(filename,"w+b")
例如FILE*fp=fopen("test.dat","wb+");
--详细说明
fopen()函数的用法
fopen函数用于打开文件,其调用格式为:
FILE*fopen(char*filename,*type);
fopen()函数中第一个形式参数表示文件名,可以包含路径和文件名两部分。
如:
"B:
TEST.DAT"
"C:
\\TC\\TEST.DAT"
注意:
如果将路径写成"C:
\TC\TEST.DAT"是不正确的,这一点要特别注意。
fopen函数用来打开一个文件,其调用的一般形式为:
文件指针名=fopen(文件名,使用文件方式)其中,“文件指针名”必须是被说明为FILE类型的指针变量,“文件名”是被打开文件的文件名。
“使用文件方式”是指文件的类型和操作要求。
“文件名”是字符串常量或字符串数组。
例如:
FILE*fp;fp=("filea","r");其意义是在当前目录下打开文件filea,只允许进行“读”操作,并使fp指向该文件。
又如:
FILE*fphzkfphzk=("c:
\\hzk16',"rb")其意义是打开C驱动器磁盘的根目录下的文件hzk16,这是一个二进制文件,只允许按二进制方式进行读操作。
两个反斜线“\\”中的第一个表示转义字符,第二个表示根目录。
使用文件的方式共有12种,下面给出了它们的符号和意义。
第二个形式参数表示打开文件的类型。
关于文件类型的规定参见下表。
表文件操作类型
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
字符含义
————————————————————————————
"r"打开文字文件只读
"w"创建文字文件只写
"a"增补,如果文件不存在则创建一个
"r+"打开一个文字文件读/写
"w+"创建一个文字文件读/写
"a+"打开或创建一个文件增补
"b"二进制文件(可以和上面每一项合用)
"t"文本文件(默认项)
赞同
11
|评论
向TA求助
回答者:
Hexpert|七级
Matlab中数据文件的读写操作说明2(打开关闭文件及文件读写)
(2011-08-2523:
03:
47)
标签:
matlab
数据文件
文件读写
数据导入导出
分类:
编程设计
1、打开文件
在Matlab中进行文件的数据读写之前必须先打开文件,打开文件用fopen命令,其调用的格式为
fid=fopen(文件名,‘打开方式’)%文件名为字符串,可包括文件所在路径,默认为当前工作路径,fid为所打开文件句柄,后面对文件读写及关闭均需要此文件句柄。
若打开文件成功,则返回的fid值大于0,否则返回负值。
打开方式可为:
1)‘r’:
以只读方式打开文件(默认的方式),所打开的文件必须已存在。
2)‘r+’:
以读写方式打开文件,打开后先读后写。
所打开的文件必须已存在。
3)‘w’:
以写入方式打开文件。
所打开的文件已存在则更新;不存在则创建。
4)‘w+’:
以读写方式打开文件。
所打开的文件已存在则更新;不存在则创建。
5)‘a’:
以追加方式打开文件,打开文件后指针位于文件末尾。
文件不存在则创建。
6)‘a+’:
以追加方式打开文件,打开文件后,先读入数据再添加数据。
文件不存在则创建。
另外,在这些字符串后添加一个“t”,如‘rt’或‘wt+’,则将该文件以文本方式打开;如果添加的是“b”,则以二进制格式打开,这也是fopen函数默认的打开方式。
2、关闭文件
在对文件进行读写完成后,需要关闭已经打开的文件以保存数据。
关闭文件用fclose函数,其调用格式为:
fstate=fclose(fid)%关闭fid所表示的文件。
fstate表示关闭文件操作的返回代码,若关闭成功,返回0,否则返回-1。
如果要关闭所有已打开的文件用fclose(‘all’)。
3、二进制文件的读写
1)写二进制文件
fwrite函数按照指定的数据精度将矩阵中的元素写入到文件中。
其调用格式为:
COUNT=fwrite(fid,A,precision)
说明:
其中COUNT返回所写的数据元素个数(可缺省),fid为文件句柄,A用来存放写入文件的数据,precision代表数据精度,常用的数据精度有:
char、uchar、int、long、float、double等。
缺省数据精度为uchar,即无符号字符格式。
a=[123456789];
fid=fopen('d:
test.bin','wb');%以二进制数据写入方式打开文件fid=3%其值大于0,表示打开成功
fwrite(fid,a,'double')%得到ans=9表示写入了9个数据
fclose(fid)%得到ans=0表示关闭成功
2)读二进制文件
fread函数可以读取二进制文件的数据,并将数据存入矩阵。
其调用格式为:
[A,COUNT]=fread(fid,size,precision)
说明:
其中A是用于存放读取数据的矩阵、COUNT是返回所读取的数据元素个数、fid为文件句柄、size为可选项,若不选用则读取整个文件内容;若选用则它的值可以是下列值:
N(读取N个元素到一个列向量)、inf(读取整个文件)、[M,N](读数据到M×N的矩阵中,数据按列存放)。
precision用于控制所写数据的精度,其形式与fwrite函数相同。
4、文本文件的读写操作
1)读文本文件
fscanf函数可以读取文本文件的内容,并按指定格式存入矩阵。
其调用格式为:
[A,COUNT]=fscanf(fid,format,size)
说明:
其中A用来存放读取的数据,COUNT返回所读取的数据元素个数,fid为文件句柄,format用来控制读取的数据格式,由%加上格式符组成,常见的格式符有:
d(整型)、f(浮点型)、s(字符串型)、c(字符型)等,在%与格式符之间还可以插入附加格式说明符,如数据宽度说明等。
size为可选项,决定矩阵A中数据的排列形式,它可以取下列值:
N(读取N个元素到一个列向量)、inf(读取整个文件)、[M,N](读数据到M×N的矩阵中,数据按列存放)。
2)写文本文件
fprintf函数可以将数据按指定格式写入到文本文件中。
其调用格式为:
fprintf(fid,format,A)
说明:
fid为文件句柄,指定要写入数据的文件,format是用来控制所写数据格式的格式符,与fscanf函数相同,A是用来存放数据的矩阵。
上面语句中,参数format由%开头,共可由4个部分组成,分别如下:
●标记(flag),为可选部分。
●宽度和精度指示,为可选部分。
●类型标志符,为可选部分。
●转换字符,为必需部分。
A.标记
标记用于控制输出的对齐方式,可以选择的内容如下所示。
标记的可选内容
函数功能示例
负号(-)在参数左侧进行判别%-5.2d
加号(+)在数字前添加符号%+5.2d
空格()在数字前插入空格%5.2d
0在数字前插入0%05.2d
B.宽度和精度指示
用户可以通过数字指定输出数字的宽度及精度,格式如下:
ans=
0
打开fout.txt文件,其内容为:
1.20-43.30000000
1.200000-43.300000
1.20-43.30000000
从上述结果可以看出宽度和精度控制的效果。
C.转换字符
转换字符用于指定输出的符号,可以选择的内容如下表所示。
格式化输出的标志符及意义
标志符意义
%c输出单个字符
%d输出有符号十进制数
%e采用指数格式输出,采用小写字母e,如:
3.1415e+00
%E采用指数格式输出,采用大写字母E,如:
3.1415E+00
%f以浮点数的格式输出
%g%e及%f的更紧凑的格式,不显示数字中无效的0
%G与%g相同,但是使用大写字母E
%i有符号十进制数
%o无符号八进制数
%s输出字符串
%u无符号十进制数
%x十六进制数(使用小写字母a-f)
%X十六进制数(使用大写字母A-F)
其中%o、%u、%x、%X支持使用子类型,具体情况这里不再赘述。
格式化输出标志符的效果见下面的例子。
例:
fprintf格式化输出示例。
x=0:
.1:
1;
y=[x;exp(x)];
fid=fopen('fout.txt','wt');
fclose(fid)
ans=
0
显示该文件:
0.001.00000000
0.101.10517092
0.201.22140276
0.301.34985881
0.401.49182470
0.501.64872127
0.601.82211880
0.702.01375271
0.802.22554093
0.902.45960311
1.002.71828183
例:
利用fprintf函数在显示器上输出字符串
fprintf(1,'It''sFriday.\n')
It'sFriday.
在该例中,利用1表示显示器,并且用两个单引号显示单引号,使用\n进行换行。
在格式化输出中,这类符号称为转义符。
MATLAB中的常用转义符如下表所示。
MATLAB中的常用转义符
转义符功能
\b退格
\f表格填充
\n换行符
\r 回车
\t tab
\\ 反斜线
''或''单引号
%% 百分号
关于format格式的例子(发表博文时有些字符会被过滤掉,这里用了图片):
例:
创建一个字符矩阵并存入磁盘,再读出赋值给另一个矩阵。
a='string';
fid=fopen('char1.txt','w');
fprintf(fid,'%s',a);
fclose(fid);
fid1=fopen('char1.txt','rt');
b=fscanf(fid1,'%s')%得到b=string,是从fid1的文件读取的
另例:
fid=fopen('fx.txt','r');%得到文件号
[f,count]=fscanf(fid,'%f%f',[12,90]);%把文件号1的数据读到f中。
其中f是[1290]的矩阵,
%这里'%f%f'表示读取数据的形势,他是按原始数据型读取
fclose(fid);%关闭文件
注:
本文根据原博文和进行修改。
几个很简单的matlab题
2007-5-915:
08
提问者:
zjncy|浏览次数:
1647次
只需要m文件就可以了,但是m文件要能通过得出正确结果(顺便说一下是在什么哪个matlab版本环境下的,尽量不要使用扩展工具箱)
1.猜数游戏。
首先由计算机产生[1,100]之间的随机整数,然后由用户猜测所产生的随机数。
根据用户猜测的情况给出不同提示,如猜测的数大于产生的数,则显示“High”,小于则显示“Low”,等于则显示“Youwon”,同时退出游戏。
用户最多可以猜7次。
2.用筛选法求某自然数范围内的全部素数。
素数是大于1,且除了1和它本身以外,不能被其他任何整数所整除的整数。
用筛选法求素数的基本思想是:
要找出2~m之间的全部素数,首先在2~m中划去2的倍数(不包括2),然后划去3的倍数(不包括3),由于4已被划去,再找5的倍数(不包括5),…,直到再划去不超过的数的倍数,剩下的数都是素数。
3.Fibonacci数列定义如下:
f1=1
f2=1
fn=fn-1+fn-2(n>2)
求Fibonacci数列的第20项。
4.输入三角形的三条边,求面积。
5.建立数据文件test.dat,要求该文件可以读、写。
文件内容如下:
NAMESCORE
Liuqi84.0
Zhangbin87.5
Liping90.0
Wangwei78.0
Wujian92.5
……
6.已知某班的5名学生的三门课成绩列表如下:
学生序号12345
高等数学7889647368
外语8377807870
MATLAB语言8291788268
试写出有关命令,先分别找出三门课的最高分及其学生序号;然后找出三门课总分的最高分及其学生序号。
针对上小题的成绩表,求出其三门课总分存入数组ZF,再利用SORT命令对之按降序排序,同时把相应的学生序号存入数组XH。
7.试编一个m程序,将一维数组x中的N个数按颠倒的次序重新存储。
如N=5,原来x为:
x=[13579]
而经过颠倒处理后x中数据的次序应该为:
x=[97531]
8.用随机顶点坐标画出5个粉色的三角形,并用黄色的○表示顶点
9.用fzero求取下列方程最接近的5个根
a)弹簧的振动方程
tan(x)=x
b)平板的对流换热方程p=0.1
2*cot(x)=x/p-p/x
10椭圆和抛物线相交求交点
g(x,y)=x^2/4+y^2-1
f(x,y)=y-4x^2+3
我来帮他解答
输入内容已经达到长度限制
还能输入9999字
插入图片删除图片插入地图删除地图插入视频视频地图
参考资料:
匿名回答提交回答取消
2007-5-1019:
34
满意回答
太多了,不全会,完成部分。
matlab6.5版
%【1】
x=round(100-rand*(100-1))
fork=1:
7
y=input('Inputnumber:
')
ify>x
disp('High')
elseify disp('Low') elsey==x disp('Youwon') return end end 运行结果: x=22 Inputnumber: 20 y=20 Low Inputnumber: 30 y=30 High Inputnumber: 25 y=25 High Inputnumber: 22 y=22 ans=1 Youwon %【2】 clc;clear m=30 fori=1: m p=primes(i); end p 运行结果: m= 30 p= 2357111317192329 %【3】 N=20 f (1)=1;f (2)=1; fork=3: N f(k)=f(k-1)+f(k-2); end f' 运行结果: ans= 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 %【4】 a=input('inputa: ') b=input('inputb: ') c=input('inputc: ') s=(a+b+c)/2; Area=sqrt(s*(s-a)*(s-b)*(s-c)) 运行结果: inputa: 3 a=3 inputb: 4 b=4 inputc: 5 c=5 Area=6 %【7】 x=[13579] xx=rot90(rot90(x)) 运行结果: x= 13579 xx= 97531 %【10】 f='y-4*x^2+3' g='x^2/4+y^2-1' [x,y]=solve(f,g) ezplot(f) holdon ezplot(g) 运行结果: x= [1/16*(190+14*17^(1/2))^(1/2)] [-1/16*(190+14*17^(1/2))^(1/2)] [1/16*(190-14*17^(1/2))^(1/2)] [-1/16*(190-14*17^(1/2))^(1/2)] y= [-1/32+7/32*17^(1/2)] [-1/32+7/32*17^(1/2)] [-1/32-7/32*17^(1/2)] [-1/32-7/32*17^(1/2)] 赞同 2 |评论
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 读写
![提示](https://static.bdocx.com/images/bang_tan.gif)