matlab文件操作fopen,fseek,fread,fclose等
Matlab笔记之五-MATLAB 常用函数简介

Matlab笔记之五----◎#MATLAB 常用函数简介一、通用命令1.1帮助命令demo 启动演示程序helpbrowser 超文本文档帮助信息help 在线帮助命令helpdesk 超文本文档帮助信息doc 以超文本方式显示帮助文档Helpwin 打开在线帮助窗1.2工作空间管理clear从内存中清除变量和函数quit退出MATLABclc清除命令窗口exit关闭MATLABsave把变量存入数据文件中who列出工作空间中的变量load从文件中读入数据变量whos列出工作内存中变量的详细信息format设置数据显示格式what列出当前目录中的Matlab文件more分页输出which查找指定函数和文件的位置1.3路径管理addpath添加搜索路径path控制MATLAB的搜索路径rmpath从搜索路径中删除目录pathtool弹出修改搜索路径窗口1.4操作系统指令cd改变当前工作目录pwd显示当前工作目录名copyfile文件拷贝getenv给出环境值delete删除文件dos执行DOS指令并返回结果dir列出文件!执行外部使用程序mkdir创建目录rmdir删除目录二、基本运算2.1算术运算+ 加 / 斜杠或右除.* 数组乘 - 减\反斜杠或左除./数组右除*矩阵乘^矩阵乘方.\数组左除dot向量内积cross向量叉积.^数组乘方kronKronecker乘积或张量积2.2关系运算<小于>大于==等于<=小于或等于>=大于或等于~=不等于2.3逻辑操作&逻辑“和”|逻辑“或”~逻辑“非”xor逻辑“异或”any有非零元素则为真all所有元素非零时为真2.4特殊运算符=赋值号‘引号()园括号.小数点,逗号[ ]方括号:冒号%注释符{}花括号…续行符'共轭转置@函数句柄;分号.'转置三、编程语言结构3.1控制语句if条件执行语句switch多个条件分支else同if一起使用case同switch一起使用elseif同if一起使用otherwise可同switch一起使用end结束for,while,if等语句tryTry-cathch结构for按规定次数重复执行语句catch同try一起使用while不确定次数重复执行语句return返回break终止最内层循环continuefor或while循环中结束本次循环3.2计算运行builtin执行内联函数evalin跨空间计算串表达式的值eval运行字符串表示的表达式feval函数宏指令evalc执行MATLAB字符串run执行脚本文件3.3脚本文件、函数及变量exist检查函数或变量是否被定义isglobal若是全局变量则为真function函数文件引导语句mfilename正在执行的M文件名global定义全局变量persistent定义永久变量3.4参数处理inputname实际调入变量名nargoutchk输出变量个数检查nargchk输入变量个数检查varargin输入参数nargout函数输出参数的个数varargout输出参数nargin函数输入参数的个数3.5信息显示disp显示矩阵和字符串内容lasterr最后一个错误信息error显示错误信息lastwarn最后一个警告信息fprintf格式化输出warning显示警告信息3.6交互式输入input提示键盘输入uicontrol创建用户界面控制keyboard激活键盘作为命令文件uimenu创建用户界面菜单pause暂停四、基本矩阵函数和操作4.1基本矩阵eye单位矩阵linspace线性等分向量ones全1矩阵logspace对数等分向量zeros全0矩阵meshgrid用于三维曲面的网格坐标rand均匀分布随机阵randn正态分布随机阵4.2矩阵基本信息disp显示矩阵内容isempty若是空矩阵则为真length向量的长度isequal若对应元素相等则为真size输出数组的大小islogical若是逻辑数则为真ndims输出数组的维数isnumeric若是数值则为真isvector若为向量则为真isprime若为素数则为真4.3矩阵操作tril提取矩阵的下三角部分reshape改变矩阵的形状triu提取矩阵的上三角部分blkdiag生成块对角阵fliplr矩阵左右翻转end数组的长度,即最大下标flipud矩阵的上下翻转find找出非零元素的下标rot90矩阵逆时针旋转90度4.4特殊变量和常量pi圆周率realmax最大浮点数inf、Inf无穷大realmin最小正浮点数i、j虚数单位isfinite若是有限数则为真nan、NaN不确定数isinf若是无穷大则为真eps浮点运算相对误差isnan若为不确定数则为真ans最新表达式的运算结果4.5特殊矩阵magic魔方阵company伴随矩阵pascalPascal矩阵gallery一些小测试矩阵hilbHilbert矩阵toeplitzToepllitz矩阵invhilbHilbert逆矩阵hankelHankel矩阵4.6字符串和数字之间的转换double按ASCII码将字符串转换成数值数组char按ASCII码将数值数组转换成字符串int2str将整数直接转换为字符串str2double字符串转换为双精度num2str将数值直接转换为字符串str2num字符串转换为数值mat2str将矩阵直接转换为字符串sprintf格式输出字符串sscanf格式读入字符串4.7字符串操作strcat字符串连接组合findstr查找字符串strvcat字符串竖向连接strmatch寻找符合条件的行deblank去掉字符串末尾的空格strrep寻找和替代strcmp字符串比较symvar寻找字符串表达式中的变量strcmpi字符串比较(忽略大小写) strjust调整字符串排列位置strncmp比较字符串的前n个字符lower转换为小写eval执行字符串表达式upper转换为大写ischar判断是否为字符型blanks产生由空格组成字字符串4.8单元(cell)数组相关cell生成单元数组num2cell将数组矩阵转化成单元celldisp显示单元数组的内容iscell判断是否为单元类型celldisp图形显示单元数组的内容五、基本数学函数5.1三角函数sin正弦sec正割tanh双曲正切asin反正弦asec反正割atanh反双曲正切cos余弦csc余割coth双曲余切acos反余弦acsc反余割acoth反双曲余切tan正切sinh双曲正弦sech双曲正割atan反正切asinh反双曲正弦asech反双曲正割cot余切cosh双曲余弦csch双曲余割acot反余切acosh反双曲余弦acsch反双曲余割5.2指数函数exp指数函数log自然对数(以e为底)sqrt平方根log2以2为底的对数nthrootn次方根log10常用对数(以10为底)5.3复数相关abs绝对值或模complex用实部和虚部构成复数conj取复数共轭angle相角real取复数实部isreal若为实数矩阵则为真imag取复数虚部unwrap相位角360度调整5.4取整和求余ceil朝正无穷大方向取整mod求余fix朝0方向取整rem求余floor朝负无穷大方向取整sign符号函数round四舍五入取整七、矩阵函数和数值线性代数7.1矩阵分析det计算行列式rank矩阵的秩norm向量或矩阵范数rref化为行阶梯形normest估计矩阵2范数trace矩阵的迹null零空间subspace子空间的角度orth值空间7.2线性方程luLU分解luinc不完全LU分解cholCholesky分解cholinc不完全Cholesky分解qrQR分解inv矩阵的逆cond矩阵条件数pinv伪逆condest估计1-范数条件数nnls非负最小二乘解rcondLINPACK逆条件数lscov已知协方差的最小二乘解\、/解线性方程组7.3特性值和奇异值eig矩阵特征值和特征向量qz广义特征值eigs求稀疏矩阵的多个特征值poly特征多项式svd奇异值分解polyeig多项式特征值问题svds求稀疏矩阵的多个奇异值hessHessenberg矩阵gsvd归一化奇异值分解condeig矩阵各特征值的条件数schurSchur分解7.4矩阵函数expm矩阵指数funm计算一般矩阵函数expm1矩阵指数的Pade逼近logm矩阵对数expm2用泰勒级数求矩阵指数sqrtm矩阵平方根expm3通过特征值和特征向量求矩阵指数八、数据分析8.1基本运算sum求和median中值hist统计频数直方图max最大值sort排序histc直方图统计min最小值sortrows按行排序std标准差mean平均值prod元素乘积var求方差8.2数值积分trapz梯形法计算数值积分dblquad二重(闭型)数值积分指令quad抛物线法计算数值积分quadl高阶法计算数值积分九、多项式、非线性方程和常微分方程9.1多项式函数conv多项式相乘polyint积分多项式分析deconv多项式相除polyval求多项式的值poly根据零点创建多项式polyvalm求矩阵多项式的值polyder多项式微分residue求部分分式表达polyfit多项式拟合roots求多项式的根9.2非线性方程fminbnd非线性函数在某区间中极小值fminsearch单纯形法求多元函数极值点指令fzero单变量函数的零点9.3常微分方程求解器ode113变阶法解方程ode23t解适度刚性微分方程ode15s变阶法解刚性方程ode23tb低阶法解刚性微分方程ode23低阶法阶微分方程ode45高阶法解微分方程ode23s低阶法解刚性微分方程十、作图函数10.1基本作图命令plot平面直角坐标曲线作图waterfall形似瀑布流水形状的网线图plot3三维直角坐标曲线作图fill3三维曲面多边形填色mesh三维网格图loglog双对数刻度曲线surf三维表面图polar极坐标曲线图meshc带等高线的三维网格图semilogxX轴半对数刻度曲线meshz带边界面的三维网格图semilogyY轴半对数刻度曲线surfc带等高线的三维表面图plotyy双纵坐标图surfz带边界面的三维表面图10.2 绘图窗口和坐标轴axes创建轴hold保持绘图窗口中的现有图形axis坐标轴刻度控制subplot划分绘图窗口,创建子图grid显示坐标网格zoom二维图形的变焦放大figure设置当前绘图窗口colormap设置色图box坐标形式shg显示绘图窗口10.3图形标注title图形标题text在图上标注文字xlabelX轴标注texlabel将字符串转换为TeX格式ylabelY轴名标注gtext用鼠标在图上标注文字legend图例说明plotedit图形编辑工具十一、文件操作fopen打开文件fread读二进制文件fclose关闭文件fwrite写二进制文件读文本文件sprintf写格式数据到串fprintf格式化输出到文本文件sscanf在格式控制下读串fseek、ftell、frewind、feof 文件定位操作命令十二、示例函数demo演示程序flow无限大水体中水下射流速度数据intro幻灯演示指令peaks产生peaks图形数据十三、符号工具包13.1基本操作sym定义基本符号对象fortran符号表达式的Fortran表达式syms定义基本符号对象latex符号表达式的LaTeX表示findsym确认表达式中符号变量13.2线性代数det行列式的值poly特征多项式diag创建对角阵或提取对角线rank秩eig矩阵特征值和特征向量rref化为行阶梯形矩阵指数svd奇异值分解inv矩阵的逆tril抽取矩阵下三角部分jordanJordan分解triu抽取矩阵上三角部分null零空间13.3化简collect合并同类项simple运用各种方法化简符号表达式expand对指定项展开simplify恒等式简化factor因式分解subexpr运用符号变量置换子表达式horner转换成嵌套形式subs通用置换指令numden提取公因式13.4微积分limit求极限jacobianJacobian矩阵diff求导数symsum符号序列的求和int计算积分Taylor级数13.5方程求解solve求解方程组compose求复合函数fsolve解非线性方程finverse求反函数dsolve求解符号常微分方程lsqnonlin解非线性最小二乘问题fminunc拟牛顿法求多元函数的极值点13.6变量精度digits设置今后数值计算的相对精度vpa按指定精度给出数值型结果13.7积分变换fourierFourier变换ztransZ变换ifourierFourier反变换iztransZ反变换laplaceLaplace变换ilaplaceLaplace反变换13.8图形使用ezplot绘制平面曲线ezcontour画等位线ezplot3绘制三维曲线ezcontourf画填色等位线ezmesh绘制网格图ezpolar采用极坐标绘图ezmeshc绘制含等高线的网格图funtool函数计数器ezsurf画曲面图rsumsRiemann求和ezsurfc画带等位线的曲面图taylortoolTaylor级数计数器13.9 Maple接口maple进入Maple工作空间计算mfun对Maple中若干经典特殊函数实施数值计算mfunlist能被mfun计算的Maple经典特殊函数列表mhelp查阅Maple中的库函数及调用方法procread把按Maple格式写的源程序读入Maple工作空间十四、其它函数14.1坐标变换cart2pol直角坐标变为柱(或极)坐标cart2sph直角坐标变为球坐标pol2cart柱(或极)坐标变为直角坐标sph2cart球坐标变为直角坐标【转】 MATLAB画图入门篇--各种基本图形绘制的函数和实例【来自网络】2011-03-26 22:14转载自flyeeee最终编辑flyeeee一.二维图形(Two dimensional plotting)1. 基本绘图函数(Basic plotting function):Plot, semilogx, semilogy, loglog, polar, plotyy(1). 单矢量绘图(single vector plotting):plot(y),矢量y的元素和y元素下标之间在线性坐标下的关系曲线。
Matlab教程文件打开关闭

二进制文件为非文本文件 常见扩展名:“COM”、“EXE” 、“BMP” 、
“WAV”
3
MATLAB中基本的低级文件I/O指令:
1.打开和关闭文件
fopen、fclose
2.格式读写
fprintf、fscanf、fgetl、fgets
3.非格式读写
fread、fwrite
4.文件定位和状态
mexPrintf("Hello Matlab World!"); }
22
8.2.2 MATLAB计算引擎
MATLAB的计算引擎应用就是利用MATLAB 提供的一组接口函数,在用户开发的C/C++语 言应用程序中,通过某种通信机制后台调用 MATLAB应用程序以完成复杂的系统任务。
23
例8-11
8
8.1.3 文件定位和文件状态
1.feof函数:检测文件是否已经结束
status=feof(fid)
2.ferror函数:用于查询文件的输入、输出错误信息
msg=ferror(fid)
3.frewind函数:使位置指针重新返回文件的开头
frewind(fid)
4.fseek函数:设置文件的位置指针
mxArray *matGetVariable(MATFile *mfp,const char *name)
4.写入数据──matPutVariable
int matPutVariable(MATFile *mfp, const char *name,const mxArray *mp)
27
扩展阅读
15
8.1.6 图像、声音文件的读写
1.imread函数:从文件中读入图像
matlab读取文本文件的几种方法

matlab读取文本文件的几种方法在MATLAB中,有多种方法可以读取文本文件。
以下是其中几种常用的方法:1. `fscanf`:这个函数可以读取符合特定格式的文本文件。
例如,如果文本文件中的每一行都是一个浮点数,可以使用以下代码读取文件:```matlabfileID = fopen('','r'); % 打开文件data = fscanf(fileID,'%f\n'); % 读取数据fclose(fileID); % 关闭文件```2. `textscan`:这个函数可以读取任意格式的文本文件,并返回一个单元数组,其中的每个单元包含一行数据。
例如:```matlabfileID = fopen('','r'); % 打开文件data = textscan(fileID, '%f'); % 读取数据fclose(fileID); % 关闭文件```3. `readmatrix`:这个函数可以读取包含数字的文本文件,并将其作为矩阵返回。
例如:```matlabdata = readmatrix(''); % 读取数据```4. `readtable`:这个函数可以读取包含表格数据的文本文件,并将其作为表格返回。
例如:```matlabdata = readtable(''); % 读取数据```以上方法都是基于文本文件的,如果需要读取的是CSV文件,可以使用MATLAB内置的`readtable`或`readmatrix`函数。
例如:```matlabdata = readtable(''); % 读取CSV文件作为表格```或者:```matlabdata = readmatrix(''); % 读取CSV文件作为矩阵```。
matlab文件操作及读txt文件

matlab文件操作及读txt文件matlab文件操作文件操作是一种重要的输入输出方式,即从数据文件读取数据或将结果写入数据文件。
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文件操作

一、文件打开与关闭
文件打开 函数:
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编程-输入输出函数

MATLAB编程-输入输出函数目录第八章输入/输出函数...................................................................... ..............................................3 8.1 函数textread................................................................ (3)8.2 关于 load 和 save 命令的进一步说明 ..................................................................... .........4 8.3 MATLAB 文件过程简介 ..................................................................... ..............................5 8.4 文件的打开与关闭...................................................................... .. (6)8.4.1 fopen 函数...................................................................... (6)8.4.2 fclose 函数 ..................................................................... ..........................................8 8.5 二进制 I/O 函数 ..................................................................... . (8)8.5.1 fwrite 函数 ..................................................................... (8)8.5.2 fread 函数 ..................................................................... . (9)例 8.1 读写二进制数据...................................................................... .. (9)测试8.1..................................................................... (11)8.6 格式化 I/O 函数 ..................................................................... .. (11)8.6.1 fprint 函数...................................................................... . (11)8.6.2 格式转换指定符的理解 ..................................................................... (12)8.6.3 如何使用格式字符串...................................................................... (14)例 8.2 产生一个信息表...................................................................... (15)8.6.4 fscanf 函数 ..................................................................... . (16)8.6.5 fgetl 函数 ..................................................................... ..........................................17 8.7 格式化和二进制 I/O 函数的比较 ..................................................................... . (17)例 8.3 格式化和二进制 I/O 文件的比较......................................................................18测试8.2..................................................................... (20)8.8 文件位置和状态函数...................................................................... .. (21)8.8.1 exist 函数 ..................................................................... (21)例 8.4 打开一个输出文件...................................................................... .. (21)8.8.2 函数ferror.................................................................. . (23)8.8.3 函数foef ................................................................... ............................................23 8.9 函数uiimport ............................................................... . (27)8.10 总结...................................................................... . (29)8.10.1 好的编程习惯总结...................................................................... .. (29)8.10.2 MATLAB 总结 ..................................................................... ...............................30 8.11 练习...................................................................... . (30)8.1................................................................. . (30)8.2................................................................. . (30)8.3................................................................. . (31)8.4................................................................. . (31)8.5................................................................. . (31)8.6................................................................. . (31)8.7................................................................. . (31)8.8................................................................. . (31)8.9..................................................................... (32)8.10.................................................................... .. (32)8.11.................................................................... .. (32)8.12.................................................................... .. (32)8.13.................................................................... .. (32)第八章输入/输出函数在第二章中,我们已经学到如何用 load 和 save 命令加载和保存 MATLAB 数据,以及如何使用 fprintf 函数格式化输出数据。
请列举5个常用的文件操作函数

请列举5个常用的文件操作函数在计算机编程中,对文件进行操作是非常常见的操作。
文件操作函数是指用来操作文件的函数。
常用的文件操作函数有很多,但是以下五个函数是非常常用的。
1. fopen()函数fopen()函数是用来打开文件的。
使用该函数可以指定文件的名称和操作方式(如只读、只写等)。
fopen()函数返回一个表示该文件的指针,可以用于后续的文件操作。
使用该函数要注意文件是否存在和是否有读写权限。
2. fseek()函数fseek()函数可以用来设置文件指针的位置。
文件指针是用来表示当前操作的文件中的位置的。
使用fseek()可以将文件指针置于特定的位置。
这在读写大型文件时非常有用。
3. fread()函数fread()函数用于从文件中读取数据。
使用该函数可以指定要读取的数据的大小和要读取的数据的个数。
fread()函数返回实际读取的数据的个数。
在使用该函数时,要注意要读取的数据的类型和大小,并确保数据的完整性。
4. fwrite()函数fwrite()函数与fread()函数相反,它用于向文件中写入数据。
使用该函数可以指定要写入数据的大小和要写入数据的个数。
fwrite()函数返回实际写入的数据的个数。
在使用该函数时,要注意要写入的数据的类型和大小,并确保数据的完整性。
5. fclose()函数fclose()函数用于关闭文件。
使用该函数可以确保在文件操作完毕后及时地关闭文件。
如果不及时关闭文件,可能会造成文件的损坏或数据的遗失。
综上所述,以上这些文件操作函数是编程时非常常用的。
在编程过程中,需要对文件进行操作时,可以通过这些函数来实现。
在使用这些函数时,要注意正确的使用方式,并保证文件的完整性和安全性。
Matlab对路径的操作及读写文件

%返回文件标识符指向的一行的最多nchar个任何字符
>>fclose(fid)
8、 fwrite
用于将二进制数据写入文件中,需要和fopen,fclose配合使用。例如:
>> f=fullfile('D:','Matlab','example.txt');
>> fid = fopen(f, 'wb');
>>x = 0:.1:1;
%从0到1以0.1为单位建立一个矩阵
>>y = [x; exp(x)];
>> f=fullfile('D:','Matlab','example.txt');
>>fid = fopen(f,'w');
>>fprintf(fid,'%6.2f %12.8f\n',y);
% double method
>> which abs(single(0))
C:\MA
TLAB7\toolbox\matlab\elfun\@single\abs.bi
% single method
7、isdir
判断一个路径是否代表了一个目录,例如:
>> p='D:\Matlab';
bytes:文件大小;
isdir:是否是目录。例如:
>> p='D:\Matlab';
>>files=dir(p)
files =
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
文件操作是一种重要的输入输出方式,即从数据文件读取数据或将结果写入数据文件。
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等。
缺省数据精度为uchar,即无符号字符格式。
例6.8 将一个二进制矩阵存入磁盘文件中。
>> a=[1 2 3 4 5 6 7 8 9];>> 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函数相同。
3、文本文件的读写操作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的矩阵中,数据按列存放)。
matlab中的fscanf的用法如下:A=fscanf(fid,format)[A, count]=fscanf(fid,format,size)[A, count]=fscanf(fid,format,size)个人感觉用的最多的是这样的形式:data = fscanf(fid,format,size);其中data为读取内容的数组,它的大小由size决定。
size是一个[m n]的向量,m为行,n 为列(注意,这里读取的顺序是按列优先排列的,不明白的话可以看下面的例子),若n取inf表示读到文件末尾。
fid为fopen打开文件的返回值,format是格式化参数(像printf、scanf)。
举个小例子:路径+文件名:d:\moon.txt内容:13,1,3.43,2.1,231, 12, 24,5.4,6现在为了读取moon.txt中的数据存在一个数组里,可以用如下方法:fid=fopen('d:\moon.txt');data=fscanf(fid,'%f,%f,%f',[3,inf]) ;%这里得用单引号fclose(fid);这时data中的数据如下:(3行4列,matlab元素按照列的顺序排列)13 3 1 41 2.1 12 5.44 23 2 6通常我们可能需要用引用数组中的某行或某列来画图,方法是data(m,:) 或者data(:,n),即取得data数组的第m行或第n列。
2)写文本文件fprintf函数可以将数据按指定格式写入到文本文件中。
其调用格式为: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)我个人觉得用第一种方式较好。
因为有些时候,特别是fx.txt 的一行种有多个数据时用load就比较麻烦了。
4.数据文件定位MATLAB提供了与文件定位操作有关的函数fseek和ftell。
fseek函数用于定位文件位置指针,其调用格式为:status=fseek(fid, offset, origin)其中fid为文件句柄,offset表示位置指针相对移动的字节数,OFFSET values are interpreted as follows: > 0 Move toward the end of the file.= 0 Do not change position.< 0 Move toward the beginning of the file.origin表示位置指针移动的参照位置,ORIGIN values are interpreted as follows:'bof' or -1 Beginning of file'cof' or 0 Current position in file'eof' or 1 End of file。
若定位成功,status返回值为0,否则返回值为–1。
ftell函数返回文件指针的当前位置,其调用格式为:position=ftell (fid)返回值为从文件开始到指针当前位置的字节数。
若返回值为–1表示获取文件当前位置失败。
例:FID=fopen('sw.m','r')fseek(FID,10,-1)ans =>> ftell(FID)ans =10>> fseek(FID,-10,1)ans =>> ftell(FID)ans =2180文件指针可以移动到当前文件末尾的后面,但不能移动到开头的前面;当把指针移动到文件末尾后面时,若关闭文件则文件大小会自动增长到文件指针所指的大小,用这种方法可以很容易创建一个很大的文件,当然新增加的文件内容是随机的。
【附录:matlab读取grd格式文件的源代码】clc;clear all;close all;fid=fopen(['C:\Zhenghui_Code\testDLL\testForDLL\kms04ssh-egm96u.grd'],'r');head=fread(fid,4,'uint8=>char')'; %读取文件头DSAAfscanf(fid,'\n');nx=fscanf(fid,'%d',1);%读取格网数据的行数nnx,列数nnzfp=fseek(fid,1,0); %1表示读取文件指针向后偏移1位,0表示指针移动参考当前位置ny=fscanf(fid,'%d',1);fscanf(fid,'\n');xmin=fscanf(fid,'%f',1);%读取x的最小值和最大值fseek(fid,4,1); %4表示读取文件指针向后偏移4位,1表示指针移动参考位置为文件结尾xmax=fscanf(fid,'%f',1);fscanf(fid,'\n');ymin=fscanf(fid,'%f',1);%读取y的最小值和最大值fseek(fid,4,1);ymax=fscanf(fid,'%f',1);fscanf(fid,'\n');zmin=fscanf(fid,'%f',1);%读取z的最小值和最大值fseek(fid,4,1);zmax=fscanf(fid,'%f',1);fscanf(fid,'\n');for i=1:ny %注意matlab是按照列的顺序来存放数据的,先存第1列,然后第2列,依次到最后一列。