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 =
matlab读取工作区指定文件的函数语句
Matlab有多种函数可用于读取MATLAB工作区的指定文件。
下面是其中一些常见的函数:
1. load函数:可以用来读取MAT文件中的数据。
该函数可以使用工作空间的路径作为参数,将文件数据导入到MATLAB工作区的指定变量中。
其中load函数中的变量不需要预先声明。
2. dlmread函数:主要用于读取具有固定列数的文件数据。
该函数需要知道文件的列数,文件路径和文件名作为参数。
当读取的数据不符合设定的格式时,会产生错误信息。
3. fscanf函数:是将文件数据输入MATLAB工作区的一种方式。
该函数可以用来读取特定类型的文件,如CSV文件、TXT文件等,并且可以一次读取多个数据行。
函数中的格式控制符用于指定数据类型和输入格式。
4. fopen函数:主要用于打开指定文件。
此函数需要知道文件的路径和文件名作为参数。
此函数提供了一个句柄用于后续文件读取,句柄是可以被传递和引用的。
5. fclose函数:用于关闭打开的文件,使MATLAB可以对其他操作进行内存操作。
在使用这些函数时,我们需要注意,对于一些文件格式,可能需要使用相应的专门函数,以确保读取正确。
同时,还可以使用save 函数将数据保存至MATLAB工作区,并且可以选择多种保存格式,如时间序列、带时间的结构体、结构体和数组等。
这些功能将为数据处理和仿真提供极大的便利。
matlab04 Matlab 编程2_2
3
文件的关闭: 文件的关闭:fclose status=fclose(fid); 其中fid为所要关闭的文件的句柄,status为关闭文 为所要关闭的文件的句柄, 其中 为所要关闭的文件的句柄 为关闭文 件的返回代码,若成功则为0,否则为-1。 件的返回代码,若成功则为 ,否则为 。
4
文件的读写
二进制文件的读取: 二进制文件的读取:fread [A,count]=fread(fid,size,precision) 其中 A 用来存放读取的数据,count返回所读取的数 用来存放读取的数据, 返回所读取的数 据元素个数(可省) 为文件句柄, 据元素个数 ( 可省 ) , fid为文件句柄, size为可选 为文件句柄 为可选 若不选用则读取整个文件,若选用,则取值为: 项,若不选用则读取整个文件,若选用,则取值为: N 读取N个元素到一个列向量 读取 个元素到一个列向量 Inf 读取整个文件 [M,N] 读取数据到一个 M × N 矩阵中,按列存放 矩阵中,
例:
>> fprintf(‘The value of a is %g’, a);
11
文本文件的写入: 文本文件的写入:fprintf 文件的写入 count=fprintf(fid,format,A) 按指定的格式写入文本文件; 将矩阵 A 按指定的格式写入文本文件;若省略 fid, , 则表示在屏幕上输出; 开头, 则表示在屏幕上输出 ; format以 %开头 , 通常由以 以 开头 下几个部分组成: 下几个部分组成: flags (optional) Width and precision fields (optional) Conversion character (required)
Matlab 文件操作
matlab使用文件IO函数
使用文件I/O函数前面介绍的都是MATLAB中的一些高级函数,除此之外MATLAB还包含了一组低端的文件I/O函数,如前面介绍的所有文件的打开和关闭函数:fopen函数和fcl ose函数。
这些函数是建立在ANSI标准C库中的I/O函数。
若用户对C语言熟悉的话,那么也肯定熟悉这些函数。
比如,MATLAB 文件I/O函数使用和C语言同样的编程模式等。
要读写这些数据,需进行以下几步:(1) 使用fopen函数打开文件。
fopen函数将会返回一个文件标志,通过它,就可以使用其他所有的低端文件I/O函数。
(2) 对文件进行操作,如:读写二进制数据、格式化读写文本数据等。
(3) 使用fclose函数来关闭文件。
2.4.1 二进制数据的读取使用fread函数可从文件中读取二进制数据,它将每个字节看成整数,并将结果以矩阵形式返回。
对于读取二进制文件,fread必须制定正确的数据精度。
fread的基本调用方法是:A=fread(fid)其中fid是一个整数型变量,是通过调用fopen函数获得的,表示要读取的文件标识符,输出变量A为矩阵,用于保存从文件中读取的数据。
例如文件test.txt的内容如下:test it用fread函数读取该文件,输入如下命令:>> f=fopen('test.txt','r');>> answer=fread(f)answer =11610111511632105116输出变量的内容是文件数据的ASCII码值,若要验证读入的数据是否正确,通过下面的命令可以验证。
>> disp(char(ans1'))test itfread函数的第二个输入参数可以控制返回矩阵的大小,例如:>> f=fopen('test.txt','r');>> answer=fread(f,2)answer =116101也可以把返回矩阵定义为指定的矩阵格式,例如>> f=fopen('test.txt','r');>> an=fread(f,[2 3])answer =116 115 32101 116 105使用fread函数的第三个输入变量,可以控制fread将二进制数据转成MATLAB 矩阵用的精度,包括一次读取的位数(Number of Bits)和这些位数所代表的数据类型。
Matlab数据导入方法
Matlab数据导入方法在编写一个程序时,经常需要从外部读入数据,或者将程序运行的结果保存为文件。
MATLAB使用多种格式打开和保存数据。
本章将要介绍 MATLAB中文件的读写和数据的导入导出。
13.1 数据基本操作本节介绍基本的数据操作,包括工作区的保存、导入和文件打开。
13.1.1 文件的存储MATLAB支持工作区的保存。
用户可以将工作区或工作区中的变量以文件的形式保存,以备在需要时再次导入。
保存工作区可以通过菜单进行,也可以通过命令窗口进行。
1. 保存整个工作区选择File菜单中的Save Workspace As…命令,或者单击工作区浏览器工具栏中的Save,可以将工作区中的变量保存为MAT文件。
2. 保存工作区中的变量在工作区浏览器中,右击需要保存的变量名,选择Save A s…,将该变量保存为MAT文件。
3. 利用save命令保存该命令可以保存工作区,或工作区中任何指定文件。
该命令的调用格式如下:● save:将工作区中的所有变量保存在当前工作区中的文件中,文件名为matlab.mat,MAT文件可以通过load函数再次导入工作区,MAT函数可以被不同的机器导入,甚至可以通过其他的程序调用。
● save('filename'):将工作区中的所有变量保存为文件,文件名由filename 指定。
如果filename中包含路径,则将文件保存在相应目录下,否则默认路径为当前路径。
● save('filename', 'var1', 'var2', ...):保存指定的变量在 filename 指定的文件中。
● save('filename', '-struct', 's'):保存结构体s中全部域作为单独的变量。
● save('filename', '-struct', 's', 'f1', 'f2', ...):保存结构体s中的指定变量。
初识MATLAB之文件读取
初识MATLAB之⽂件读取初识MATLAB之⽂件读取 MATLAB的每⼀个脚本⽂件,⼏乎都涉及到⽂件的读写操作,我以⼏个案例来分析MATLAB的⽂件读取的基本操作。
1. 打开与关闭⽂件 打开⽂件的函数为fopen,关闭⽂件的函数为fclose。
这⾥将MATLAB中help帮助的内容拿出来介绍具体。
FID = fopen(FILENAME,PERMISSION) 打开⽂件FILENAME,由PERMISSION指定的模式: 'r' 打开⽂件进⾏阅读 'w' 打开⽂件写; 丢弃现有内容 'a' 打开或创建⽂件以供写作; 将数据附加到⽂件末尾 'r+' 打开(不创建)⽂件进⾏读写 'w+' 打开或创建⽂件进⾏阅读和写作; 丢弃现有内容 'a+' 打开或创建⽂件进⾏阅读和写作; 将数据附加到⽂件末尾 'W' 打开⽂件进⾏写⼊⽽不⾃动刷新 'A' 打开⽂件,⽆需⾃动刷新即可追加 仅当⽂件时,FILENAME可以是MATLABPATH相对部分路径名打开阅读。
您可以以⼆进制模式(默认)或⽂本模式打开⽂件。
在⼆进制模式下,没有任何字符被挑出来进⾏特殊处理。
在PC上的⽂本模式中,前⾯有回车符在输⼊中删除换⾏符并在换⾏符之前添加输出中的字符。
要以⽂本模式打开⽂件,请将“t”附加到权限字符串,例如'rt'和'w +t'。
(在Unix上,⽂本和⼆进制模式是相同的,所以这没有效果。
在PC系统上这很关键。
) status = fclose(FID) 丢失与⽂件标识符FID关联的⽂件,这是从早先调⽤FOPEN获得的整数值。
fclose如果成功则返回0,否则返回-1。
如果FID不代表打开⽂件,或者等于0(标准输⼊),1(标准输出),或2(标准错误),fclose引发错误。
MATLAB操作命令大全
MATLAB操作命令大全1.基本操作- help:查看函数的帮助文档。
- save:将变量保存到文件中。
- load:从文件中加载变量。
- clear:清除当前工作空间中的变量。
- who:列出当前工作空间中的变量。
- whos:显示当前工作空间中变量的详细信息。
- quit:退出MATLAB。
2.变量操作-=:赋值操作,将值赋给变量。
- disp:显示变量的值。
- length:返回数组的长度。
- size:返回数组的大小。
- max:返回数组的最大值。
- min:返回数组的最小值。
- sum:返回数组元素的和。
3.数学操作-+:加法操作,将两个数值相加。
--:减法操作,将两个数值相减。
-*:乘法操作,将两个数值相乘。
-/:除法操作,将两个数值相除。
-^:指数操作,将一个数值提高到指定次幂。
- sqrt:返回一个数值的平方根。
- abs:返回一个数值的绝对值。
4.矩阵操作- eye:创建一个单位矩阵。
- zeros:创建一个全0矩阵。
- ones:创建一个全1矩阵。
- rand:创建一个0到1之间的随机矩阵。
- diag:返回对角线元素。
- inv:返回矩阵的逆矩阵。
- det:返回矩阵的行列式。
5.图形操作- plot:绘制二维线图。
- scatter:绘制散点图。
- bar:绘制柱状图。
- hist:绘制直方图。
- surf:绘制三维曲面图。
- contour:绘制等高线图。
- imagesc:绘制矩阵的颜色图。
6.控制流程操作- if:用于条件判断。
- for:用于循环操作。
- while:用于循环操作。
- switch:用于多条件判断。
- break:跳出循环。
- continue:跳过当前循环,并继续执行下一次循环。
7.文件操作- fopen:打开文件。
- fclose:关闭文件。
- fprintf:将数据写入文件。
- fscanf:从文件中读取数据。
- fseek:设置文件指针的位置。
matlab可以直接读取二进制数据文件
matlab可以直接读取二进制数据文件,并且可以将其加入到矩阵中。
如果对c语言十分熟悉的话,应该对fopen,fclose,ftell,fseek,fread,fwrite,feof这些函数非常熟悉了,幸运的是在matlab中仍然可以使用这些函数来读入实验数据。
现在假定有一个数据文件叫data.dat,它的前面2k是存放参数的,我们做数据处理的时候需要跳过去,后面的数据是16位整数类型的,每组数据有512个。
现在要把该数据文件的所有数据读入一个nx512的矩阵中,n的个数不定,根据数据文件中的数据而定。
用.m脚本的方式编写如下:% deal data from specified data fileclear ;data_fname = 'data.dat' ; % 这里是文件名jump_distance = 2048 ; % 这里是跳过的字节数% 打开方式为二进制打开,其实'r'就行,matlab是默认二进制形式打开文件的file_id = fopen(data_fname, 'rb');% 从文件开始跳过jump_distance个字节fseek(file_id, jump_distance, 'bof');% 先手工构造一个1x512大小的矩阵raw_data = [1:1:512] ;while feof(file_id) == 0% 这就是大名顶顶的fread了,数据类型是int16,每次读入512个数% raw_array每次都是512x1的矩阵,ele_count为读入的数的个数(正常情况下应为512)[row_array, ele_count] = fread(file_id, 512, 'int16') ;if ele_count < 512 % elecount < 512代表数据不够,已经到了文件的结尾break ;else% 将512x1的row_array转置一下,变为1x512的矩阵row_array = row_array' ;% 然后,将row_array追加到raw_data中raw_data = [raw_data; row_array] ;endend% get off the first line [1:1:512]% 这里就是要把raw_data的第一行数据手工构造的那行数据给去掉,剩下的就都是文件中的数据了raw_data(1,:)=[] ;% 关闭文件fclose(file_id);% delete other usless vars% 这里是把用过的变量都删除掉,免得workspace里面乱七八糟的什么都有,这是个好习惯,呵呵。
matlab fread函数的用法
matlab fread函数的用法fread函数是MATLAB中用于读取二进制文件的函数之一,它的使用非常方便和简单,但是对于不熟悉的人可能会有些困惑。
在本篇文章中,我们将会详细解释fread函数的用法及其参数和返回值。
一、语法和参数fread函数的基本语法如下:A = fread(fileID, sizeA, precision)其中,fileID是由fopen函数返回的文件标识符;sizeA是返回数据的大小,也就是读取的元素数目;precision是每个元素的格式,主要包括'single'、'double'、'int8'、'int16'、'int32'、'int64'、'uint8'、'uint16'、'uint32'和'uint64'这几种。
需要注意的是,sizeA和precision是可选参数,并且它们的默认值分别为inf和'uint8'。
也就是说,如果不指定sizeA和precision,则fread函数将读取整个文件并将其视为uint8格式。
二、读取二进制文件接下来我们将演示如何使用fread函数读取二进制文件。
首先,我们需要先创建一个二进制文件,使用fwrite函数写入一些数据:data = rand(5, 5);fileID = fopen('data.bin', 'w');fwrite(fileID, data, 'double');fclose(fileID);此时我们已经在当前路径下创建了一个名为data.bin的二进制文件,并将data矩阵以double格式写入。
我们可以使用fread函数读取这个文件:fileID = fopen('data.bin', 'r');A = fread(fileID, [5, 5], 'double');fclose(fileID);disp(A);上述代码中,我们首先使用fopen函数打开data.bin文件并获得文件标识符,接着使用fread函数读取文件中的数据,并将其保存在A矩阵中。
matlab fread函数
matlab fread函数MATLAB作为一种编程语言,为科学计算提供了很多种方法,其中之一是针对读取二进制文件的fread()函数。
fread()函数可以以二进制方式读取任何文件,因此它是处理大型数值运算所需的理想函数。
本文将介绍MATLAB的fread()函数及其用法。
步骤1:使用fread()函数要使用fread()函数,我们需要了解其语法。
fread()的第一个输入是文件的文件标识符,它可以通过使用fopen()函数打开文件获得。
可以使用以下代码示例打开一个二进制文件:fid = fopen('file.dat','rb');在此示例中,“file.dat”是我们要读取二进制数值数据的文件名,‘rb’ 代表二进制方式打开文件,这意味着读取到的数据将按照二进制形式被处理。
fid是在MATLAB中自动分配的文件标识符。
步骤2:指定读取文件的格式正如我们需要在程序中明确指定变量类型(比如整数、字符串等),我们也需要自行指定读取二进制文件的格式。
下面是指定不同数据类型的二进制格式的一些示例:- ‘int32’:32位整数- ‘float32’:32位浮点数- ‘double’:64位双精度浮点数此外,我们还可以指定数据的长度、大小、字节顺序和跳过一定数量的字节等。
下面是一个典型的fread()调用示例,可以更好地说明这个过程:A = fread(fid,[m,n],'precision') % Read a [m by n] array of type precision.在此代码片段中,“precision”是我们要读取的数据类型,[m,n]是我们从文件中读取的数组或矩阵的维度。
步骤3:使用文件标识符一旦我们已经为要读取的二进制文件打开一个文件标识符(通过使用fopen()函数),就可以使用fread()函数读取文件中的数据。
下面的代码段展示了如何使用fread()函数读取二进制数据(示例中假设我们要读取的是32位浮点数):a = fread(fid,inf,'float32') % Read to the end of the file.此代码读取文件“file.dat”中的所有浮点数,并将它们存储在名为“a”的数组中。
- 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列,依次到最后一列。