fopen,fprintf 和 sprintf在Matlab中的应用
MATLAB读写函数一些使用说明

MATLAB读写函数一些使用说明1. load函数:load函数用于从文件中读取数据并将其加载到工作空间中。
可以使用load函数读取MATLAB的二进制文件、文本文件以及其他文件格式转换成的MATLAB文件。
语法如下:load filename例如:load data.mat2. save函数:save函数用于将工作空间中的数据保存为文件。
可以使用save函数将数据保存为MATLAB格式、二进制格式或文本格式的文件。
语法如下:save filename例如:save data.mat3. fopen函数和fclose函数:fopen函数用于打开文件,而fclose函数用于关闭文件。
在打开文件后,可以使用其他函数进行读写操作。
语法如下:fid = fopen(filename, mode)fclose(fid)例如:fid = fopen('data.txt', 'r')4. fprintf函数:fprintf函数用于将数据以指定的格式写入到文本文件中。
它可以将变量、矩阵等不同类型的数据保存为文本格式的文件。
语法如下:fprintf(fid, format, data)例如:fprintf(fid, '%d %f', A)5. fscanf函数:fscanf函数用于从文本文件中按指定的格式读取数据。
可以使用fscanf函数读取数字、字符串、矩阵等类型的数据。
语法如下:data = fscanf(fid, format, size)例如:data = fscanf(fid, '%d %f', [2, 3])6. xlsread函数和xlswrite函数:xlsread函数用于从Excel文件中读取数据,而xlswrite函数用于将数据写入Excel文件。
这两个函数可以方便地读写Excel文件中的数据。
语法如下:data = xlsread(filename, sheet, range)xlswrite(filename, data, sheet, range)例如:data = xlsread('data.xlsx', 'Sheet1', 'A1:C3')7. imread函数和imwrite函数:imread函数用于从图像文件中读取图像数据,而imwrite函数用于将图像数据保存为图像文件。
MATLAB文件操作

一、文件打开与关闭
文件打开 函数:
fopen 调用格式:
fid = fopen(filename,permission) Permission:’r’,’w’,’a’,’r+’,’w+’,
a+,A,W
文件关闭 函数:
fclose 调用格式:
fclose(fid) 关闭与打开实例
fprintf、fwrite(二进制文件写入) 调用格式:
fprintf(fid,format,A,...) 实例:
fprintf(fid,’%+10.2f\n’,x)
格式说明符
MATLAB的格式说明符包含5部分: % ——引导符(必需) +、-、0——标记(可选) 12.2——宽度与小数位数(可选) s、i、f、e、g——转换字符(必需) \n、%%——表控字符
三、特殊函数
load 从文件加载数据 uigetfile 选择欲打开文件 fgetl 从文件读入行 feof 判断是否文件末尾
fid=fopen(‘calculate.m’,’r’); fclose(fid);
二、文件读写
文件读取 函数:
fscanf、fread(二进制文件读取) 调用格式:
A = fscanf(fid,format,size) 实例
data=fscanf(fid,’%f’,[1,5])
文件写入 函数:
matlab在数学中的应用

一如果想将数据保存为平常的.txt文档,可以由其他软件进行读取,函数fprintf是一个不错的选择。
还以上面的数据为例,要将这些量按格式保存在一个tp.txt文档中,可以建立以下命令文件。
fid=fopen(’tp.txt’,’wt’);fprintf(fid,’This is the database of class 1.\n’);name=’Sally’;types=1;x=3.1;y=45;answer=’Yes’;fprintf(fid,’%s Type%u%f%u%s\n’,name,types,x,y,answer);name=’Tom’;types=1;x=2.5;y=20;answer=’No’;fprintf(fid,’%s Type%u%f%u%s\n’,name,types,x,y.answer);name=’Joy’;types=3;x=.51;y=1;answer=’No’;fprintf(fid,’%s Type%u%f%u%s\n’,name,types,x,y, answer);name=’Lily’;types=2;x=2.1;y=80;answer=’Uncertain’;fprintf(fid,’%s Type%u%f%u%s\n’,name,types,x,y,answer);fclose(fid);运行后,就会建立一个tp.txt文档,其中的内容如下:This is the database of class 1.Sally Typel 3.100000 45 YesTom Typel 2.500000 20 NoJoy Type3 0.510000 1 NoLily Type2 2.100000 80 Uncertain现在对程序中的语句进行说明。
第l段是打开一个文件,返回一个指标fid,第2段是直接在文件中写入一句话“This is the database of class 1.”,然后就是每赋值一次,就向文件中写人一次:fprintf(fid,’%S Type%u%f%u%S\n’,name,types.x,y,answer);其格式为其中,%S表示字符串(string);%f表示浮点数(float);%u表示十进制数。
matlab的fopen函数的用法

感谢你指定了这个主题,让我有机会为你撰写一篇深度和广度兼具的文章。
在本篇文章中,我将从简到繁地探讨matlab的fopen函数的用法,希望能够让你更深入地理解这一主题。
1. 什么是matlab的fopen函数?matlab的fopen函数是用于打开文件或者创建新文件的函数。
它提供了很多不同的选项,可以用于不同的文件操作,比如读取、写入、追加等。
fopen函数在matlab中是一个非常常用的函数,可以操作各种类型的文件,包括文本文件、二进制文件等。
2. fopen函数的基本用法在matlab中,可以使用fopen函数来打开文件,语法格式如下:```matlabfileID = fopen(filename, permission)```其中,filename是要打开的文件名,permission是打开文件的模式。
- permission可以是'r'表示只读模式,'w'表示写入模式,'a'表示追加模式,'r+'表示读写模式,'w+'表示创建或覆盖读写模式等。
使用fopen函数打开文件后,会返回一个fileID,这个fileID可以用于后续对文件的读取、写入操作。
3. fopen函数的深入应用在实际使用中,fopen函数有很多不同的用法和选项。
可以使用fopen函数来打开网络上的文件,可以使用fopen函数来打开串口通信,还可以用fopen函数来打开设备文件等。
这些应用都需要使用不同的选项和参数,可以根据具体的需求来选择合适的参数。
4. 关于matlab的fopen函数的个人观点和理解在我看来,matlab的fopen函数非常强大和灵活,可以满足各种不同的文件操作需求。
通过合理地使用fopen函数的各种选项和参数,可以实现对文件的高效操作,提高程序的性能和可靠性。
我认为,熟练地掌握fopen函数的用法是每个matlab程序员都应该具备的基本技能。
matlab fprintf用法 -回复

matlab fprintf用法-回复Matlab fprintf用法详解总目标:本文将逐步解释Matlab中fprintf函数的用法。
我们将从基础知识开始,逐步深入了解该函数的功能和使用方法。
希望通过本文的学习,您将对Matlab中fprintf的使用有更为全面的了解。
第一步:基本认识fprintf函数fprintf函数是Matlab中用于将数据写入文件的函数之一。
它允许我们将数据按照指定的格式写入到文件中。
它的基本语法如下:fprintf(fid, format, A, ...)其中,fid表示文件标识符,用于指定要写入的文件;format表示数据的格式;A表示要写入文件的数据。
我们可以使用多个A来写入多组数据。
现在,我们来逐步解释这些参数的含义和用法。
第二步:文件标识符fid在使用fprintf函数之前,我们首先需要创建一个文件,并获得该文件的文件标识符fid。
Matlab中提供了fopen函数用于打开文件,并返回文件标识符。
我们可以使用下面的语法打开文件并获得文件标识符:fid = fopen('filename', 'mode')其中,filename表示要打开的文件名,包括路径信息;mode表示打开文件的模式,常见的模式有'r'(只读)、'w'(写入,如果文件存在则清空文件并从头写入)、'a'(追加,如果文件存在则在文件末尾追加写入)等。
第三步:数据的格式化format参数用于指定数据的格式。
我们可以根据需要,选择不同的格式进行数据的输出。
常见的格式化符号如下:d:整数f:浮点数c:字符s:字符串.nf:保留小数点后n位注意:在format参数中,使用格式化符号时需要用百分号进行转义。
第四步:数据的写入我们可以使用一维数组或矩阵来表示要写入文件的数据。
对于一维数组,可以使用以下语法将其写入文件:fprintf(fid, format, A)其中,A为要写入文件的数组名。
matlab常见经典平差程序

matlab常见经典平差程序希望本人编写的经典平差可以对matlab初学者以及测绘专业的学生有用By cowboyfunction void()sprintf('请选择平差类型')sprintf('1: 参数平差\n2: 条件平差\n3:具有条件的参数平差\n4: 具有参数的条件平差\n') a=input('请输入对应号码\n');switch (a)case 1% 参数平差V=AX-Lsprintf('1:参数平差V=AX-L')n=input('请输入n=');t=input('请输入t=');A=input('请输入系数矩阵A=');L=input('请输入常数项矩阵L=');P=diag(input('请输入权阵P='))%P=input('请输入权阵P=');N=A'*P*A;U=A'*P*L;sprintf('开始计算')X=inv(N)*(U);V=A*X-L;Qx=inv(N);u=sqrt((V'*P*V)/(n-t));fid=fopen('data.txt','wt'); %写入文件路径,文件输出fprintf(fid,'=====================参数平差: V=AX-L =====================\n');fprintf(fid,'输出n,t\n') ;fprintf(fid,'%12.5f %12.5f\n',n ,t) ;%n,t fprintf(fid,'输出矩阵A\n')[m,n]=size(A); %Afor i=1:1:mfor j=1:1:nif j==nfprintf(fid,'%12.5f\n',A(i,j));elsefprintf(fid,'%12.5f\t',A(i,j));endendendfprintf(fid,'\n');fprintf(fid,'输出矩阵L\n') ;[m,n]=size(L); %Lfor i=1:1:mfor j=1:1:nif j==nfprintf(fid,'%12.5f\n',L(i,j));elsefprintf(fid,'%12.5f\t',L(i,j));endendendfprintf(fid,'\n');fprintf(fid,'输出矩阵P\n') ;[m,n]=size(P); %P for i=1:1:mfor j=1:1:nif j==nfprintf(fid,'%12.5f\n',P(i,j));elsefprintf(fid,'%12.5f\t',P(i,j));endendendfprintf(fid,'\n');fprintf(fid,'输出矩阵X\n'); [m,n]=size(X); %X for i=1:1:m for j=1:1:nif j==nfprintf(fid,'%12.5f\n',X(i,j));elsefprintf(fid,'%12.5f\t',X(i,j));endendendfprintf(fid,'\n');fprintf(fid,'输出矩阵V\n'); [m,n]=size(V); %V for i=1:1:m for j=1:1:nif j==nfprintf(fid,'%12.5f\n',V(i,j));elsefprintf(fid,'%12.5f\t',V(i,j));endendendfprintf(fid,'\n');fprintf(fid,'输出矩阵Qx\n'); [m,n]=size(Qx); %Qx for i=1:1:mfor j=1:1:nif j==nfprintf(fid,'%12.5f\n',Qx(i,j)); elsefprintf(fid,'%12.5f\t',Qx(i,j));endendendfprintf(fid,'\n');fprintf(fid,'输出单位权中误差u\n'); [m,n]=size(u); %u for i=1:1:m for j=1:1:nif j==nfprintf(fid,'%12.5f\n',u(i,j));elsefprintf(fid,'%12.5f\t',u(i,j));endendendfprintf(fid,'\n');fclose(fid);case 2% 条件平差BV+W=0sprintf('2:条件平差BV+W=0')n=input('请输入n=');t=input('请输入t=');B=input('请输入系数矩阵B=');W=input('请输入自由项向量W='); P=input('请输入权阵P='); sprintf('开始计算')K=-inv((B*inv(P)*B'))*W;V=inv(P)*B'*K;u=sqrt((V'*P*V)/(n-t));Ql=inv(P)-inv(P)*B'*inv(B*inv(P)*B')*B*inv(P);fid=fopen('data.txt','wt'); %写入文件路径,文件输出fprintf(fid,'=====================条件平差: BV+W=0 =====================\n'); fprintf(fid,'输出n,t\n') ;fprintf(fid,'%12.5f %12.5f\n',n ,t) ;%n,tfprintf(fid,'输出矩阵B\n');[m,n]=size(B); %Bfor i=1:1:mfor j=1:1:nif j==nfprintf(fid,'%12.5f\n',B(i,j));elsefprintf(fid,'%12.5f\t',B(i,j));endendendfprintf(fid,'\n');fprintf(fid,'输出矩阵W\n');[m,n]=size(W); %Wfor i=1:1:mfor j=1:1:nif j==nfprintf(fid,'%12.5f\n',W(i,j));elsefprintf(fid,'%12.5f\t',W(i,j));endendendfprintf(fid,'\n');fprintf(fid,'输出矩阵P\n'); [m,n]=size(P); %Pfor i=1:1:mfor j=1:1:nif j==nfprintf(fid,'%12.5f\n',P(i,j)); elsefprintf(fid,'%12.5f\t',P(i,j));endendendfprintf(fid,'\n');fprintf(fid,'输出矩阵V\n'); [m,n]=size(V); %Vfor i=1:1:mfor j=1:1:nif j==nfprintf(fid,'%12.5f\n',V(i,j)); elsefprintf(fid,'%12.5f\t',V(i,j)); endendendfprintf(fid,'\n');fprintf(fid,'输出矩阵Qx\n'); [m,n]=size(Ql); %Ql for i=1:1:m for j=1:1:nif j==nfprintf(fid,'%12.5f\n',Ql(i,j));elsefprintf(fid,'%12.5f\t',Ql(i,j));endendendfprintf(fid,'\n');fprintf(fid,'输出单位权中误差u\n');[m,n]=size(u); %u for i=1:1:mfor j=1:1:nif j==nfprintf(fid,'%12.5f\n',u(i,j));elsefprintf(fid,'%12.5f\t',u(i,j));endendendfprintf(fid,'\n');fclose(fid);case 3% 具有条件的参数平差% 参数平差V=AX-L% 条件平差BX+W=0sprintf('3:具有条件的参数平差V=AX-L;BX+W=0') n=input('请输入n=');t=input('请输入t=');r=input('请输入r=');A=input('请输入误差方程系数矩阵A=');L=input('请输入常数项矩阵L=');B=input('请输入条件方程系数矩阵B=');W=input('请输入自由项向量W=');P=input('请输入权阵P=');sprintf('开始计算')K=-(inv(B*inv(A'*P*A)*B'))*(W+B*inv(A'*P*A)*A'*P*L)X=(inv(A'*P*A))*(B'*K+A'*P*L)N=(A'*P*A)M=B*inv(N)*B'Qx=inv(N)-inv(N)*B'*inv(M)*B*inv(N)u=sqrt((V'*P*V)/(n-t+r))fid=fopen('data.txt','wt'); %写入文件路径,文件输出fprintf(fid,'=====================具有条件的参数平差: V=AX-L;BX+W=0 ===========================\n');fprintf(fid,'输出n,t,r\n') ;fprintf(fid,'%12.5f %12.5f %12.5f\n',n ,t,r); %n,t,rfprintf(fid,'输出矩阵A\n');[m,n]=size(A); %Afor i=1:1:mfor j=1:1:nif j==nfprintf(fid,'%12.5f\n',A(i,j));elsefprintf(fid,'%12.5f\t',A(i,j));endendendfprintf(fid,'\n');fprintf(fid,'输出矩阵L\n');[m,n]=size(L); %Lfor i=1:1:mfor j=1:1:nif j==nfprintf(fid,'%12.5f\n',L(i,j)); elsefprintf(fid,'%12.5f\t',L(i,j)); endendendfprintf(fid,'\n');fprintf(fid,'输出矩阵B\n'); [m,n]=size(B); %Bfor i=1:1:mfor j=1:1:nif j==nfprintf(fid,'%12.5f\n',B(i,j)); fprintf(fid,'%12.5f\t',B(i,j)); endendendfprintf(fid,'\n');fprintf(fid,'输出矩阵W\n'); [m,n]=size(W); %W for i=1:1:m for j=1:1:nif j==nfprintf(fid,'%12.5f\n',W(i,j)); elsefprintf(fid,'%12.5f\t',W(i,j)); endendendfprintf(fid,'\n');fprintf(fid,'输出矩阵P\n'); [m,n]=size(P); %P for i=1:1:m for j=1:1:nif j==nfprintf(fid,'%12.5f\n',P(i,j)); elsefprintf(fid,'%12.5f\t',P(i,j)); endendendfprintf(fid,'\n');fprintf(fid,'输出矩阵X\n'); [m,n]=size(X); %X for i=1:1:m for j=1:1:nif j==nfprintf(fid,'%12.5f\n',X(i,j)); elsefprintf(fid,'%12.5f\t',X(i,j)); endendendfprintf(fid,'\n');fprintf(fid,'输出矩阵V\n'); [m,n]=size(V); %Vfor j=1:1:nif j==nfprintf(fid,'%12.5f\n',V(i,j)); elsefprintf(fid,'%12.5f\t',V(i,j));endendendfprintf(fid,'\n');fprintf(fid,'输出矩阵Qx\n'); [m,n]=size(Qx); %Qx for i=1:1:m for j=1:1:nif j==nfprintf(fid,'%12.5f\n',Qx(i,j)); elsefprintf(fid,'%12.5f\t',Qx(i,j)); endendendfprintf(fid,'\n');fprintf(fid,'输出单位权中误差\n'); [m,n]=size(u); %u for i=1:1:m for j=1:1:nif j==nfprintf(fid,'%12.5f\n',u(i,j));elsefprintf(fid,'%12.5f\t',u(i,j));endendendfprintf(fid,'\n');fclose(fid);case 4% 具有参数的条件平差% 具有参数的条件方程式BV+AX+W=0sprintf('4:具有参数的条件平差BV+AX+W=0 ')n=input('请输入n=');t=input('请输入t=');r=input('请输入r=');B=input('请输入条件方程中V的系数矩阵B=');A=input('请输入条件方程中X的系数矩阵A=');W=input('请输入条件方程自由向量W=');P=input('请输入权阵P=');sprintf('开始计算')N=(B*inv(P)*B')M=(A'*inv(N)*A)X=-inv(M)*A'*inv(N)*WK=-inv(N)*(A*X+W)V=inv(P)*B'*KQx=inv(M)u=sqrt((V'*P*V)/(r-t))fid=fopen('data.txt','wt'); %写入文件路径,文件输出fprintf(fid,'=====================具有参数的条件平差: BV+AX+W=0 ================================\n');fprintf(fid,'输出n,t,r\n') ;fprintf(fid,'%12.5f %12.5f %12.5f\n',n ,t,r) ; %n,t,rfprintf(fid,'输出矩阵B\n');[m,n]=size(B); %Bfor i=1:1:mfor j=1:1:nif j==nfprintf(fid,'%12.5f\n',B(i,j));elsefprintf(fid,'%12.5f\t',B(i,j)); endendendfprintf(fid,'\n');fprintf(fid,'输出矩阵A\n'); [m,n]=size(A); %Afor i=1:1:mfor j=1:1:nif j==nfprintf(fid,'%12.5f\n',A(i,j)); elsefprintf(fid,'%12.5f\t',A(i,j)); endendendfprintf(fid,'\n');fprintf(fid,'输出矩阵W\n'); [m,n]=size(W); %Wfor i=1:1:mfor j=1:1:nif j==nfprintf(fid,'%12.5f\n',W(i,j)); elsefprintf(fid,'%12.5f\t',W(i,j)); endendendfprintf(fid,'\n');fprintf(fid,'输出矩阵P\n');[m,n]=size(P); %P for i=1:1:m for j=1:1:nif j==nfprintf(fid,'%12.5f\n',P(i,j)); elsefprintf(fid,'%12.5f\t',P(i,j)); endendendfprintf(fid,'\n');fprintf(fid,'输出矩阵X\n'); [m,n]=size(X); %X for i=1:1:m for j=1:1:nif j==nfprintf(fid,'%12.5f\n',X(i,j)); elsefprintf(fid,'%12.5f\t',X(i,j)); endendendfprintf(fid,'\n');fprintf(fid,'输出矩阵V\n'); [m,n]=size(V); %V for i=1:1:m for j=1:1:nif j==nfprintf(fid,'%12.5f\n',V(i,j)); elsefprintf(fid,'%12.5f\t',V(i,j)); endendendfprintf(fid,'\n');fprintf(fid,'输出矩阵Qx\n'); [m,n]=size(Qx); %Qx for i=1:1:m for j=1:1:nif j==nfprintf(fid,'%12.5f\n',Qx(i,j)); elsefprintf(fid,'%12.5f\t',Qx(i,j)); endendendfprintf(fid,'\n');fprintf(fid,'输出单位权中误差\n'); [m,n]=size(u); %u for i=1:1:m for j=1:1:nif j==nfprintf(fid,'%12.5f\n',u(i,j));elsefprintf(fid,'%12.5f\t',u(i,j));endendendfprintf(fid,'\n');fclose(fid);otherwisedisp('代号输入有误')end。
matlab文件操作fopen,fseek,fread,fclose等

文件操作是一种重要的输入输出方式,即从数据文件读取数据或将结果写入数据文件。
MATLAB提供了一系列低层输入输出函数,专门用于文件操作。
1、文件的打开与关闭1)打开文件在读写文件之前,必须先用fopen函数打开或创建文件,并指定对该文件进行的操作方式。
fopen函数的调用格式为:fid=fopen(文件名,…打开方式‟)说明:其中fid用于存储文件句柄值,如果返回的句柄值大于0,则说明文件打开成功。
文件名用字符串形式,表示待打开的数据文件。
常见的打开方式如下:…r‟:只读方式打开文件(默认的方式),该文件必须已存在。
λ…r+‟:读写方式打开文件,打开后先读后写。
该文件必须已存在。
λ…w‟:打开后写入数据。
该文件已存在则更新;不存在则创建。
λ…w+‟:读写方式打开文件。
先读后写。
该文件已存在则更新;不存在则创建。
λ…a‟:在打开的文件末端添加数据。
文件不存在则创建。
λ…a+‟:打开文件后,先读入数据再添加数据。
文件不存在则创建。
λ另外,在这些字符串后添加一个“t”,如…rt‟或…wt+‟,则将该文件以文本方式打开;如果添加的是“b”,则以二进制格式打开,这也是fopen函数默认的打开方式。
2)关闭文件文件在进行完读、写等操作后,应及时关闭,以免数据丢失。
关闭文件用fclose函数,调用格式为:sta=fclose(fid)说明:该函数关闭fid所表示的文件。
sta表示关闭文件操作的返回代码,若关闭成功,返回0,否则返回-1。
如果要关闭所有已打开的文件用fclose(…all‟)。
2、二进制文件的读写操作1)写二进制文件fwrite函数按照指定的数据精度将矩阵中的元素写入到文件中。
其调用格式为:COUNT=fwrite(fid,A,precision)说明:其中COUNT返回所写的数据元素个数(可缺省),fid为文件句柄,A用来存放写入文件的数据,precision代表数据精度,常用的数据精度有:char、uchar、int、long、float、double等。
MATLAB处理相关函数使用

MATLAB处理相关函数使用1. load函数:用于加载保存在MAT文件中的数据。
可以使用load 函数将数据加载到工作区中,并赋值给变量。
例如:```matlabload('data.mat') % 将data.mat中的数据加载到工作区中```2. fopen和fclose函数:用于打开和关闭文件。
可以使用fopen函数打开一个文件,并指定打开模式(读、写、追加等)。
使用fclose函数来关闭文件。
例如:```matlabfile = fopen('data.txt', 'r') % 以只读模式打开data.txt文件%进行一些操作fclose(file) % 关闭文件``````matlabdata = readtable('data.csv') % 读取data.csv文件并存储为表格变量data```4. csvwrite函数:用于将数值矩阵写入到CSV文件中。
可以使用csvwrite函数将一个数值矩阵写入到CSV文件中。
例如:```matlabA=[123;456;789]%定义一个数值矩阵csvwrite('data.csv', A) % 将矩阵A写入到data.csv文件中```5. xlsread函数:用于读取Excel文件。
可以使用xlsread函数读取Excel文件的数据,并返回一个数值矩阵或字符串矩阵。
例如:```matlab[num, txt, raw] = xlsread('data.xlsx') % 读取data.xlsx文件的数据,并存储为num、txt和raw变量```6. numel函数:用于返回数组中元素的个数。
可以使用numel函数获取一个数组的元素个数。
例如:```matlabA=[123;456;789]%定义一个数值矩阵num_elements = numel(A) % 返回A中元素的个数```7. size函数:用于返回数组的维度。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
fopen,fprintf 和sprintf在Matlab中的应用matlab中fopen函数在指定文件打开的实例如下:*1)“fopen”打开文件,赋予文件代号。
语法1:FID= FOPEN(filename,permission)用指定的方式打开文件FID=+N(N是正整数):表示文件打开成功,文件代号是N.FID=-1 : 表示文件打开不成功。
FID在此次文件关闭前总是有效的。
如果以读方式打开,matlab首先搜索工作目录,其次搜索matlab的其他目录,“permission”是打开方式参数。
打开方式参数由以下字符串确定:r 读出w 写入(文件若不存在,自动创建)a 后续写入(文件若不存在,自动创建)r+ 读出和写入(文件应已存在)w+ 重新刷新写入,(文件若不存在,自动创建)a+ 后续写入(文件若不存在,自动创建))w 重新写入,但不自动刷新a 后续写入,但不自动刷新文件的存储格式:文件打开的默认方式是:二进制。
以文本方式打开,可以在方式参数“permission”中加入“t”文件将,如“rt”,“wt+”matlab中fprintf函数的具体使用方法实例如下:fprintf函数可以将数据按指定格式写入到文本文件中。
其调用格式为:数据的格式化输出:fprintf(fid, format, variables)按指定的格式将变量的值输出到屏幕或指定文件fid为文件句柄,若缺省,则输出到屏幕1 for standard output (the screen) or2 for standard error. If FID is omitted, output goes to the screen.format用来指定数据输出时采用的格式%d 整数%e 实数:科学计算法形式%f 实数:小数形式%g 由系统自动选取上述两种格式之一%s 输出字符串fprintf(fid,format,A)说明:fid为文件句柄,指定要写入数据的文件,format是用来控制所写数据格式的格式符,与fscanf函数相同,A是用来存放数据的矩阵。
例6.9 创建一个字符矩阵并存入磁盘,再读出赋值给另一个矩阵。
>> a='string';>> fid=fopen('d:\char1.txt','w');>> fprintf(fid,'%s',a);>> fclose(fid);>> fid1=fopen('d:\char1.txt','rt');>> b=fscanf(fid1,'%s')b =stringmatlab读txt文件fid=fopen('fx.txt','r');%得到文件号[f,count]=fscanf(fid,'%f %f',[12,90]);%把文件号1的数据读到f中。
其中f是[12 90]的矩阵%这里'%f %f'表示读取数据的形势,他是按原始数据型读出fclose(fid);%关闭文件另外有的txt文件还可以用load来打开其语句为f=load('fx.txt)matlab中sprintf和fprintf函数的对比实例如下:字符串转换abs字符串到ASCII转换dec2hex十进制数到十六进制字符串转换fprintf把格式化的文本写到文件中或显示屏上hex2dec十六进制字符串转换成十进制数hex2num十六进制字符串转换成IEEE浮点数int2str整数转换成字符串lower字符串转换成小写num2str数字转换成字符串setstrASCII转换成字符串sprintf用格式控制,数字转换成字符串sscanf用格式控制,字符串转换成数字str2mat字符串转换成一个文本矩阵str2num字符串转换成数字upper字符串转换成大写在许多情况下,希望把一个数值嵌入到字符串中。
几个字符串转换可完成这个任务。
» rad=2.5; area=pi*rad^2;» t=[' A circle of radius ' num2str(rad) ' has an area of ' num2str(area) ' . ' ] ;» disp(t)A circle of radius 2.5 has an area of 19.63.这里函数num2str用来把数值转换成字符串,字符串连接用来把所转换的数嵌人到一个字符串句子中。
按类似方式,int2str把整数转换成字符串。
无论是num2str还是int2str都调用函数sprintf,它用类似C语言语法把数值转换成字符串。
函数fprintf经常是函数disp的一个有用替换,由于它提供了对结果更多的控制。
当准备把格式化的数据写到一个文件中去时,按缺省它在命令窗口显示结果。
例如,» fprintf(' See what this does ')See what this does»» fprintf(' See what this does\n ')See what this does在上面第一个例子里,fprintf显示字符串,然后立即给出MATLAB提示符。
相反,在第二个例子里,\n 插入一个新行字符,在MATLAB提示符出现之前创建一个新行。
无论fprintf还是sprintf以同样方式处理输入参量,但fprintf把输出送到显示屏或文件中,而sprintf把输出返回到一个字符串中。
例如,上面的例子用num2str可重写为» t=sprintf(' A circle of radius %.4g has an area of %.4g. ', rad, area);» disp(t)A circle of radius 2.5 has an area of 19.63.» fprintf(' A circle of radius %.4g has an area of %.4g.\n ' , rad, area)A circle of radius 2.5 has an area of 19.63.这里%.4g是用在函数num2str中的数据格式。
%.4g就是用指数或定点标记,不管哪一种更短些,只显示至4位数字。
除了g格式,还可用e (指数)和f (定点)转换。
表6.2表明在各种不同转换下,如何显示pi结果。
表6.2数值格式转换例子命令结果fprintf(' %.0e\n ',pi)3e+00fprintf(' %.1e\n ',pi)3.1e+00fprintf(' %.3e\n ',pi)3.142e+00fprintf(' %.5e\n ',pi)3.14159e+00fprintf(' %.10e\n ',pi)3.1415926536e+00fprintf(' %.0f\n ',pi)3fprintf(' %.1f\n ',pi)3.1fprintf(' %.3f\n ',pi)3.142fprintf(' %.5f\n ',pi)3.14159fprintf(' %.10f\n ',pi)3.1415926536fprintf(' %.0g\n ',pi)3fprintf(' %.1g\n ',pi)3fprintf(' %.3g\n ',pi)3.14fprintf(' %.5g\n ',pi)3.1416fprintf(' %.10g\n ',pi)3.141592654fprintf(' %.8.0g\n ',pi)3fprintf(' %.8.1g\n ',pi)3fprintf(' %.8.3g\n ',pi)3.14fprintf(' %.8.5g\n ',pi)3.1416fprintf(' %.8.10g\n ',pi)3.141592654注意,对e 和f 格式,小数点右边的十进制数就是小数点右边要显示的多少位数字。
相反,在g 的格式里,小数点右边的十进制数指定了显示数字的总位数。
另外,注意最后的五行,其结果指定为8个字符长度,且是右对齐。
在最后一行,8被忽略,因为指定超过了8位。
概括起来,当需要比缺省函数disp,num2str和int2str所提供的更多的控制时,fprintf和sprintf是有用的。
函数str2mat把一列的几个字符串转换成一个字符串矩阵。
例如,» a=' one ' ; b= ' two ' ; c= ' three ' ;» disp(str2mat(a, b, c, ' four '))onetwothreefour从上面看不明显,上面的每行有同样数目的元素。
较短行用空格补齐,使结果形成一个有效的矩阵在逆方向转换中,有时是很方便的。
» s= ' [1 2; pi 4] ' % a string of a MATLAB matrixs =[1 2; pi 4]» str2num(s)ans =1.00002.00003.14164.0000» s=' 123e+5 ' % a string containing a simple numbers =123e+5» str2num(s)ans =12300000函数str2num不能接受用户定义的变量,也不能执行转换过程的算术运算。