MATLAB文件各种操作方法(全)
- 格式:docx
- 大小:27.19 KB
- 文档页数:7
使用文本文件(.txt)进行数据存取的技巧总结(相当的经典)使用文本文件(.txt)进行数据存取的技巧总结由于本帖内容较多,部分转自他人的心得,因此,凡转贴的地方仅用“----转----”标注,原作者略去,在此对所有原作者表示感谢!特别说明:由于大家在 I/O 存取上以 txt 文件为主,且读取比存储更麻烦(存储的话 fwrite, fprintf 基本够用),因此下面的讨论主要集中在“txt 文件的读取”上。
除了标注了“转”之外,其余心得均出于本人经验之结果,欢迎大家指正、补充。
一. 基本知识:--------------------------------------------------这是转载内容----------------------------------------------------1. 二进制文件与文本文件的区别:将文件看作是由一个一个字节(byte) 组成的,那么文本文件中的每个字节的最高位都是0,也就是说文本文件使用了一个字节中的七位来表示所有的信息,而二进制文件则是将字节中的所有位都用上了。
这就是两者的区别;接着,第二个问题就是文件按照文本方式或者二进制方式打开,两者会有什么不同呢?其实不管是二进制文件也好,还是文本文件也好,都是一连串的0和1,但是打开方式不同,对于这些0和1的处理也就不同。
如果按照文本方式打开,在打开的时候会进行translate,将每个字节转换成ASCII码,而以按照二进制方式打开的话,则不会进行任何的translate;最后就是文本文件和二进制文件在编辑的时候,使用的方式也是不同的。
譬如,你在记事本中进行文本编辑的时候,你进行编辑的最小单位是字节(byte);而对二进制文件进行编辑的话,最小单位则是位(bit),当然我们都不会直接通过手工的方式对二进制文件进行编辑了。
从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种:ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。
matlab命令,应该很全了!来源:李家叶的日志matlab命令一、常用对象操作:除了一般windows窗口的常用功能键外。
1、!dir 可以查看当前工作目录的文件。
!dir& 可以在dos状态下查看。
2、who 可以查看当前工作空间变量名,whos 可以查看变量名细节。
3、功能键:功能键快捷键说明方向上键Ctrl+P 返回前一行输入方向下键Ctrl+N 返回下一行输入方向左键Ctrl+B 光标向后移一个字符方向右键Ctrl+F 光标向前移一个字符Ctrl+方向右键Ctrl+R 光标向右移一个字符Ctrl+方向左键Ctrl+L 光标向左移一个字符home Ctrl+A 光标移到行首End Ctrl+E 光标移到行尾Esc Ctrl+U 清除一行Del Ctrl+D 清除光标所在的字符Backspace Ctrl+H 删除光标前一个字符Ctrl+K 删除到行尾Ctrl+C 中断正在执行的命令4、clc可以命令窗口显示的内容,但并不清除工作空间。
二、函数及运算1、运算符:+:加,-:减,*:乘,/:除,\:左除^:幂,‘:复数的共轭转置,():制定运算顺序。
2、常用函数表:sin( ) 正弦(变量为弧度)Cot( ) 余切(变量为弧度)sind( ) 正弦(变量为度数)Cotd( ) 余切(变量为度数)asin( ) 反正弦(返回弧度)acot( ) 反余切(返回弧度)Asind( ) 反正弦(返回度数)acotd( ) 反余切(返回度数)cos( ) 余弦(变量为弧度)exp( ) 指数cosd( ) 余弦(变量为度数)log( ) 对数acos( ) 余正弦(返回弧度)log10( ) 以10为底对数acosd( ) 余正弦(返回度数)sqrt( ) 开方tan( ) 正切(变量为弧度)realsqrt( ) 返回非负根tand( ) 正切(变量为度数)abs( ) 取绝对值atan( ) 反正切(返回弧度)angle( ) 返回复数的相位角atand( ) 反正切(返回度数)mod(x,y) 返回x/y的余数sum( ) 向量元素求和3、其余函数可以用help elfun和help specfun命令获得。
m a t l a b命令一、常用对象操作:除了一般w i n d o w s窗口的常用功能键外。
1、!d i r可以查看当前工作目录的文件。
!d i r&可以在d o s状态下查看。
2、w h o可以查看当前工作空间变量名,w h o s可以查看变量名细节。
3、功能键:功能键快捷键说明方向上键C t r l+P返回前一行输入方向下键C t r l+N返回下一行输入方向左键C t r l+B光标向后移一个字符方向右键C t r l+F光标向前移一个字符C t r l+方向右键C t r l+R光标向右移一个字符C t r l+方向左键C t r l+L光标向左移一个字符h o m e C t r l+A光标移到行首E n d C t r l+E光标移到行尾E s c C t r l+U清除一行D e l C t r l+D清除光标所在的字符B a c k s p a c eC t r l+H删除光标前一个字符?C t r l+K删除到行尾?C t r l+C中断正在执行的命令4、c l c可以命令窗口显示的内容,但并不清除工作空间。
二、函数及运算1、运算符:+:加,-:减,*:乘,/:除,\:左除^:幂,‘:复数的共轭转置,():制定运算顺序。
2、常用函数表:s i n()正弦(变量为弧度)C o t()余切(变量为弧度)s i n d()正弦(变量为度数)C o t d()余切(变量为度数)a s i n()反正弦(返回弧度)a c o t()反余切(返回弧度)A s i n d()反正弦(返回度数)a c o t d()反余切(返回度数)c o s()余弦(变量为弧度)e x p()指数c o s d()余弦(变量为度数)l o g()对数a c o s()余正弦(返回弧度)l o g10()以10为底对数a c o s d()余正弦(返回度数)s q r t()开方t a n()正切(变量为弧度)r e a l s q r t()返回非负根t a n d()正切(变量为度数)a b s()取绝对值a t a n()反正切(返回弧度)a n g l e()返回复数的相位角a t a n d()反正切(返回度数)m o d(x,y)返回x/y的余数s u m()向量元素求和3、其余函数可以用h e l p e l f u n和h e l p s p e c f u n命令获得。
文件操作是一种重要的输入输出方式,即从数据文件读取数据或将结果写入数据文件。
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是一种功能强大的数值计算与数据分析工具,广泛应用于科研、工程和金融等领域。
在Matlab中,文件操作和数据导入导出是常见且重要的操作。
本文将介绍Matlab中的文件操作方法以及数据的导入导出方法,以帮助读者更好地处理和管理数据。
一、文件操作1. 文件的新建和打开:在Matlab中,可以使用`fopen`函数来新建或打开一个文件,并返回文件标识符,用于后续操作。
例如,`fid = fopen('data.txt','w')`可以新建一个用于写入的文件。
2. 文件的写入和读取:可以使用`fprintf`函数向文件中写入数据,使用`fscanf`函数从文件中读取数据。
例如,`fprintf(fid,'%s','Hello, world!')`可以将字符串"Hello, world!"写入到文件中,而`str = fscanf(fid,'%s')`则可以读取文件中的字符串。
3. 文件的关闭和删除:在文件操作完成后,应使用`fclose`函数关闭文件,以释放系统资源。
同时,可以使用`delete`函数删除不再需要的文件。
二、数据导入导出1. 文本文件的导入和导出:Matlab支持导入导出各种格式的文本文件,如CSV、TXT等。
可以使用`readtable`函数导入数据表格,使用`writetable`函数将数据表格导出到文件中。
例如,`data = readtable('data.csv')`将CSV文件中的数据导入到名为`data`的数据表格中,而`writetable(data,'output.txt')`则将数据表格导出到TXT文件中。
2. Excel文件的导入和导出:Matlab还支持导入导出Excel文件,方便处理大量的数据。
MATLAB文件各种操作方法(全)maTLaB文件各种操作方法(全)1.1文件的打开和关闭1.1.1文件的打开fopen('filename','mode')mode格式有:‘r’:只读方式打开文件(默认的方式),该文件必须已存在。
‘r+’:读写方式打开文件,打开后先读后写。
该文件必须已存在。
‘w’:打开后写入数据。
该文件已存在则更新;不存在则创建。
‘w+’:读写方式打开文件。
先读后写。
该文件已存在则更新;不存在则创建。
‘a’:在打开的文件末端添加数据。
文件不存在则创建。
‘a+’:打开文件后,先读入数据再添加数据。
文件不存在则创建。
如果rt表示该文件以文本方式打开,如果添加的是“b”,则以二进制格式打开,这也是fopen函数默认的打开方式。
Fopen函数两个返回值:1、一个是返回一个文件标识(fileidentifier),它会作为参数被传入其他对文件进行读写操作的命令,通常是一个非负的整数,可用此标识来对此文件进行各种处理。
(如果返回的文件标识是–1,则代表fopen 无法打开文件,其原因可能是文件不存在,或是用户无法打开此文件权限);2、另一个返回值就是message,用于返回无法打开文件的原因;例:1-1[f,message]=fopen('fileexam1','r')iff==-1disp(message);%显示错误信息end(若文件fileexam1不存在,则显示如下信息。
cannotopenfile.existence?permissions?memory?)例:1-2[f,message]=fopen('fileexam2','r');iff==-1disp(message);%elsedisp(f);end若文件fileexam2存在,则返回f值。
MATLAB命令⼤全和矩阵操作⼤全转载⾃:MATLAB矩阵操作⼤全⼀、矩阵的表⽰在MATLAB中创建矩阵有以下规则:a、矩阵元素必须在”[ ]”内;b、矩阵的同⾏元素之间⽤空格(或”,”)隔开;c、矩阵的⾏与⾏之间⽤”;”(或回车符)隔开;d、矩阵的元素可以是数值、变量、表达式或函数;e、矩阵的尺⼨不必预先定义。
⼆,矩阵的创建:1、直接输⼊法最简单的建⽴矩阵的⽅法是从键盘直接输⼊矩阵的元素,输⼊的⽅法按照上⾯的规则。
建⽴向量的时候可以利⽤冒号表达式,冒号表达式可以产⽣⼀个⾏向量,⼀般格式是: e1:e2:e3,其中e1为初始值,e2为步长,e3为终⽌值。
还可以⽤linspace函数产⽣⾏向量,其调⽤格式为:linspace(a,b,n) ,其中a和b是⽣成向量的第⼀个和最后⼀个元素,n是元素总数。
2、利⽤MATLAB函数创建矩阵基本矩阵函数如下:(1) ones()函数:产⽣全为1的矩阵,ones(n):产⽣n*n维的全1矩阵,ones(m,n):产⽣m*n维的全1矩阵;(2) zeros()函数:产⽣全为0的矩阵;(3) rand()函数:产⽣在(0,1)区间均匀分布的随机阵;(4) eye()函数:产⽣单位阵;(5) randn()函数:产⽣均值为0,⽅差为1的标准正态分布随机矩阵。
3、利⽤⽂件建⽴矩阵当矩阵尺⼨较⼤或为经常使⽤的数据矩阵,则可以将此矩阵保存为⽂件,在需要时直接将⽂件利⽤load命令调⼊⼯作环境中使⽤即可。
同时可以利⽤命令reshape对调⼊的矩阵进⾏重排。
reshape(A,m,n),它在矩阵总元素保持不变的前提下,将矩阵A重新排成m*n的⼆维矩阵。
⼆、矩阵的简单操作1.获取矩阵元素可以通过下标(⾏列索引)引⽤矩阵的元素,如 Matrix(m,n)。
也可以采⽤矩阵元素的序号来引⽤矩阵元素。
矩阵元素的序号就是相应元素在内存中的排列顺序。
在MATLAB中,矩阵元素按列存储。
序号(Index)与下标(Subscript )是⼀⼀对应的,以m*n矩阵A为例,矩阵元素A(i,j)的序号为(j-1)*m+i。
MATLAB批量读取文件的两种方法第一种方法是使用`dir`函数获取文件夹中的所有文件名,然后使用`load`函数逐个读取文件。
以下是具体的步骤:1. 使用`dir`函数获取文件夹中的所有文件名,该函数的语法为`filelist = dir(folder_path)`,其中`folder_path`是待读取文件的文件夹路径,`filelist`是一个结构体数组,包含文件夹中所有文件名的信息。
2. 使用循环遍历`filelist`,并使用`load`函数逐个读取文件。
`load`函数的语法为`data = load(file_path)`,其中`file_path`是文件的路径,`data`是读取的数据。
以下是一个示例代码:```matlabfolder_path = '文件夹路径';filelist = dir(folder_path);for i=3:length(filelist)file_path = fullfile(folder_path, filelist(i).name);data = load(file_path);%处理读取的数据%...end```第二种方法是使用`readtable`函数批量读取文件,并将读取的数据存储在一个cell数组中。
以下是具体的步骤:1. 使用`dir`函数获取文件夹中的所有文件名。
2. 使用循环遍历文件夹中的每个文件,并使用`readtable`函数读取文件。
`readtable`函数的语法为`data = readtable(file_path)`,其中`file_path`是文件的路径,`data`是读取的数据。
3. 将读取的数据存储在一个cell数组中。
以下是一个示例代码:```matlabfolder_path = '文件夹路径';filelist = dir(folder_path);data_cell = cell(length(filelist)-2, 1);for i=3:length(filelist)file_path = fullfile(folder_path, filelist(i).name);data = readtable(file_path);data_cell{i-2} = data;end```这两种方法可以根据实际情况选择使用。
Matlab基本使用方法详解Matlab(Matrix Laboratory)是一种面向数值计算和编程的高级语言和环境,由MathWorks公司开发。
它在科学、工程以及其他领域广泛应用,可以进行各种数值计算、数据分析、绘图以及编写复杂的算法等。
本文将详细介绍Matlab的基本使用方法,帮助初学者快速上手。
一、Matlab基础知识在开始之前,我们先了解一些Matlab的基础知识。
Matlab的代码文件以.m为后缀名,并通过Matlab编译器执行。
它是一种解释性的语言,每一行代码都可以立即执行。
Matlab提供了丰富的数学函数和工具箱,可以简化复杂的数值计算。
同时,Matlab还具备强大的矩阵运算能力,使得处理矩阵和向量的运算更加高效。
二、Matlab环境和命令行窗口当我们打开Matlab时,会出现一个包含命令行窗口的集成开发环境界面。
命令行窗口是一个交互式的界面,可以直接输入和执行Matlab命令。
我们可以在命令行窗口中进行简单的计算,例如输入"2+2"并按回车键执行,Matlab将返回计算结果"4"。
此外,通过命令行窗口,我们还可以执行脚本文件、调试代码、查看变量等。
三、基本操作和数据类型1. 变量的定义和赋值在Matlab中,使用等号(=)将数值或表达式赋值给一个变量。
例如,"x = 5"将5赋值给变量x。
同时,Matlab还支持复数、字符串、矩阵等多种数据类型。
2. 数组和矩阵Matlab中的数组和矩阵是最基本的数据结构。
数组中的元素可以是数值、字符串、逻辑值等。
矩阵是一个二维数组,可以进行各种线性代数运算。
创建矩阵可以使用方括号([])和分号(;)对元素进行分隔。
例如,"A = [1,2,3;4,5,6;7,8,9]"创建了一个3x3的矩阵A。
3. 访问矩阵元素可以使用下标访问矩阵中的元素。
在Matlab中,下标从1开始。
matlab对文件中混乱的文本格式读取操作总结在MATLAB中,可以使用多种方法来读取文件中混乱的文本格式。
下面是一些常见的操作方法总结:1. 使用fscanf函数:fscanf函数可以按照指定的格式读取文件中的数据。
你可以使用%f来读取浮点数,%d来读取整数,%s来读取字符串等。
通过合理地设置格式字符串,你可以按照文件中数据的排列顺序提取数据。
例如,如果文件中数据是以逗号分隔的一系列浮点数,你可以使用以下代码来读取:fid = fopen('data.txt', 'r');data = fscanf(fid, '%f,');fclose(fid);这将把文件中的浮点数读取到名为data的向量中。
2. 使用textscan函数:textscan函数是一个非常强大的函数,可以根据指定的格式读取各种不同格式的文本数据。
它可以灵活地处理混乱的文本格式。
你可以使用%f来读取浮点数,%d来读取整数,%s来读取字符串等。
例如,如果文件中的数据是以制表符分隔的值,你可以使用以下代码来读取:fid = fopen('data.txt', 'r');data = textscan(fid, '%f%s%d');fclose(fid);这将把文件中的数据读取到一个cell数组中,每个元素包含相应的值。
3. 使用importdata函数:importdata函数可以根据文件的扩展名自动确定适当的读取函数,并返回读取的数据。
它可以处理各种不同格式的文件,包括混乱的文本格式。
例如,如果文件中的数据是以空格分隔的一系列浮点数,你可以使用以下代码来读取:data = importdata('data.txt');这将返回一个结构体,其中包含读取的数据。
需要注意的是,根据文件的具体格式,可能需要根据实际情况进行一些调整,以确保正确读取数据。
MATLAB的基本操作方法1. 概述MATLAB是一种高级数值计算软件,广泛应用于科学和工程领域。
它提供了丰富的功能和工具,可以用于数据分析、模拟、图形绘制等多种任务。
本文将介绍MATLAB的基本操作方法,帮助读者快速上手使用该软件。
2. MATLAB环境介绍MATLAB的主界面由命令行窗口和工具栏组成。
命令行窗口是用户与MATLAB交互最常用的方式,可以输入命令并立即得到结果。
工具栏包含了一些常用的功能按钮,例如文件操作、运行程序等。
3. 变量和运算在MATLAB中,变量的定义和使用非常简单。
只需输入变量名,并赋予相应的值即可。
例如,输入"a=2",即可定义一个变量a,并赋予其值为2。
可以通过变量名来进行各种运算,如加减乘除、乘方等。
例如,输入"b=a+3",即可将a加3的结果保存在变量b中。
4. 矩阵操作MATLAB可以轻松处理各种数学运算中的矩阵操作。
矩阵可以通过使用方括号来定义。
例如,输入"A=[1 2 3; 4 5 6; 7 8 9]",即可定义一个3x3的矩阵A。
可以使用各种命令对矩阵进行操作,如转置、逆矩阵、矩阵乘法等。
例如,输入"B=A'",即可得到矩阵A的转置矩阵B。
5. 数据可视化MATLAB提供了丰富的绘图函数,可以用于数据的可视化。
要绘制一条曲线,只需给定横轴和纵轴的数据即可。
例如,输入"x=0:0.1:2*pi",即可定义一个从0到2π,步长为0.1的向量x。
然后输入"y=sin(x)",即可得到y=sin(x)的曲线。
使用plot函数将x和y绘制出来即可。
6. 文件操作MATLAB可以方便地进行文件的读写操作。
可以使用load命令读取保存在文件中的数据,使用save命令将数据保存到文件中。
例如,使用load命令加载名为"data.txt"的文本文件中的数据,并将其保存到名为"data"的变量中。
13.1 数据基本操作本节介绍基本的数据操作,包括工作区的保存、导入和文件打开。
13.1.1 文件的存储MATLAB支持工作区的保存。
用户可以将工作区或工作区中的变量以文件的形式保存,以备在需要时再次导入。
保存工作区可以通过菜单进行,也可以通过命令窗口进行。
1. 保存整个工作区选择File菜单中的Save Workspace As…命令,或者单击工作区浏览器工具栏中的Save,可以将工作区中的变量保存为MAT文件。
2. 保存工作区中的变量在工作区浏览器中,右击需要保存的变量名,选择Save As…,将该变量保存为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中的指定变量。
● save('-regexp', expr1, expr2, ...):通过正则表达式指定待保存的变量需满足的条件。
Matlab 通用操作界面介绍该部分介绍可以参考《Matlab 软件初级入门视频教程.flv 》Matlab 启动后主要包括当前目录浏览器窗口(Current Directory)、工作空间浏览器窗口(Workspace)、历史命令窗口(Command History)和命令窗口(Command Window)四个操作窗口。
下面分别介绍一下四个窗口的功能及操作。
(一)当前目录浏览器窗口(Current Directory)该窗口主要显示当前路径下包含的所有文件。
(当前路径需在菜单栏底下处进行选择、设置)(1)打开.m 文件在该窗口中双击已有.m 文件即可在Editor 窗口中打开对应的函数文件。
(2)创建新.m 文件在该窗口中通过单击右键选择New- Blank M-File 或Function M-File 即可在当前路径下创建新的.m 文件。
单击MA TLAB 界面上的图标,或者单击菜单“File ”→“New ”→“M-file ”,可打开空白的M 文件编辑器。
填写.m 文件之后保存即可在当前路径下生成新的.m 文件。
说明:有关.m 文件的写法可以参考《4--MATLAB 程序设计.doc 》文件。
(二)工作空间浏览器窗口(Workspace)工作空间浏览器窗口用于显示所有MATLAB 工作空间中的变量名、数据结构、类型、 大小和字节数。
可以对变量进行观察、编辑、提取和保存。
(1)新建变量当前目录浏览器窗口工作空间浏览器窗口历史命令窗口命令窗口在该窗口中单击右键选择New 或者单击按钮即可创建新变量,然后双击新建的变量即可进行编辑。
(2)导入变量(数据集)Matlab中可以导入Mat、Excel、Text 等文件。
在该窗口中选择按钮,按照提示即可导入相应的数据集。
导入之后可以双击变量名观察数据集。
(3)保存变量选中若干变量按鼠标右键出现快捷菜单,选择“Save As”菜单,则可把所选变量保存为.mat数据文件。
1.1 文件的打开和关闭1.1.1 文件的打开fopen ('filename', 'mode')mode格式有:‘r’:只读方式打开文件(默认的方式),该文件必须已存在。
‘r+’:读写方式打开文件,打开后先读后写。
该文件必须已存在。
‘w’:打开后写入数据。
该文件已存在则更新;不存在则创建。
‘w+’:读写方式打开文件。
先读后写。
该文件已存在则更新;不存在则创建。
‘a’:在打开的文件末端添加数据。
文件不存在则创建。
‘a+’:打开文件后,先读入数据再添加数据。
文件不存在则创建。
如果rt表示该文件以文本方式打开,如果添加的是“b”,则以二进制格式打开,这也是fopen函数默认的打开方式。
Fopen函数两个返回值:1、一个是返回一个文件标识(file Identifier),它会作为参数被传入其他对文件进行读写操作的命令,通常是一个非负的整数,可用此标识来对此文件进行各种处理。
(如果返回的文件标识是–1,则代表fopen无法打开文件,其原因可能是文件不存在,或是用户无法打开此文件权限);2、另一个返回值就是message,用于返回无法打开文件的原因;例:1-1[f,message]=fopen('fileexam1', 'r')if f==-1disp(message); %显示错误信息end(若文件fileexam1不存在,则显示如下信息。
Cannot open file.existence?permissions?memory?)例:1-2[f,message]=fopen('fileexam2', 'r');if f==-1disp (message); %显示错误信息elsedisp(f);end若文件fileexam2存在,则返回f值。
1.1.2文件的关闭Fclose(f)F为打开文件的标志,若若fclose函数返回值为0,则表示成功关闭f标志的文件;若返回值为–1,则表示无法成功关闭该文件。
(打开和关闭文件比较耗时,最好不要在循环体内使用文件)若要一次关闭打开的所有文件,可以使用下面的命令:fclose all1.2文本数据MATLAB自带的MAT文件为二进制文件,但为了便于和外部程序进行交换以及方便查看文件中的数据,也常常采用文本数据格式(数据采用ASCII码格式,可以表示字母和数字字符)与外界进行数据交换。
1.2.1 从文本文件中读取数据1、使用导入模板来读取数据2如:A=load('my_data.txt');3、读取有分隔符的ASCII数据文件如果数据文件不使用空格符而是使用逗号或是其他符号作为分隔符,用户可以选择多个可用的导入数据函数。
最简单的便是使用函数dlmread。
例2-1lcode.dat0.3445,0.8433,0.78650.7562,0.4233,0A=dlmread('lcode.dat',',')(分隔符只能选取单个字符,不能用字符串来作为分隔符)4. 使用文本头读取数值数据要读取一个包含文本头的ASCII码数据文件,可以使用textread函数,并指定头行参数。
Textread既能处理有固定格式的文件,也可以处理无格式的文件,还可以对文件中每行数据按列逐个读取。
textread函数常见的调用方法有如下几种:[A,B,C...]=textread('filename', 'format')[A,B,C...]=textread('filename', 'format',N)例2-2num1 num2 num3 num40.3242 0.4324 0.3455 0.67540.4566 0.9368 0.9892 0.92740.4658 0.2832 0.9373 0.8233因为有文件头,要使用如下textread命令来读取文件中的数据。
>> [num1 num2 num3num4]=textread('my_data.txt','%f %f %f %f','headerlines',1)执行结果如下:num1 =0.32420.45660.4658num2 =0.43240.93680.2832num3 =0.34550.98920.9373num4 =0.67540.92740.82335. 读取字母数值混合的数据例2-3文件my_exam.dat包含的混合的字母和数值如下:Joe gradeA 4.9 passsusan gradeD 2.0 fail如果想把4列数据全部读取出放在4个变量中,则使用如下命令:>> [name gra grades answer]=textread('my_exam.dat','%s %s %f %s') (textread 函数按格式字符串中指定的格式处理文件中的某个数据项,并把值放在输出变量中。
输出变量的数目必须和格式字符串中指定的变换数目项匹配,在该例中,函数按格式字符串来读取文件)若文件采用的分隔符不是空格,则必须使用函数textread ,将该分隔符作为它的参数。
例如,若文件my_exam.dat 使用分号作为分隔符,则读入该文件需使用如下命令:[name gra grades ans]=textread('my_exam.dat','%s %s %f %s','delimiter', '; ')2 文件的存储2.1 文件存写函数若要将当前的MATLAB工作空间的一个或多个变量写到一个有分隔符的ASCII码文件中,可以使用save命令或dlmwrite函数。
在默认情况下,save命令是以 MAT 格式存写数据的。
例 3-1>> clear all;>> x=rand(2,3);>> save my_test1.dat x -ascii;结果为:9.2181297e-001 1.7626614e-001 9.3546970e-0017.3820725e-001 4.0570621e-001 9.1690444e-0012.2 使用文件I/O函数2.2.1格式化写入文本数据例3-2创建一个2×2的魔方矩阵,然后打开一文件,写入数据。
>> clear all;>> x=magic(2);>> fid=fopen('exam4.txt','w');>> fprintf(fid,'%4.2f %8.4f\n',x);>> fclose(fid);x =1 34 2>> type exam4.txt1.00 4.00003.00 2.0000(fprintf函数存储的时候按行读取,然后按列存写)2.2.2 控制文件位置指针Fseek frewind设定指针位置重设指针到文件起始位置Ftell feof获得指针位置测试指针是否在文件结束位置1、fseek函数用法fseek 函数用于指定文件指针的位置,调用方式如下:status=fseek(fid,offset,origin)fid是指定的文件标识符。
offset为整数型变量,表示相对于指定位置需要的偏移字节数,正数表示向文件末尾偏移,负数表示向文件开头偏移。
Origin可以是特定字符串,也可以是整数,表示文件中的参考位置。
参考位置说明:'bof '或者 -1文件开头'cof '或者 0 文件中当前位置'eof '或者 1文件末尾2、ftell函数用法ftell 函数用来获得当前文件指针的位置,调用方式如下:position=ftell(fid)fid是指定的文件标识符。
Position为返回值,表示当前指针的位置。
position是以相对于文件开头的字节数来表示的。
如果返回值为–1,表示未能成功调用。
这是可以通过调用feeeor(fid)的具体的错误信息。
3、frewind函数用法frewind 函数用来把文件指针重新复位到文件开头。
调用方式如下:frewind(fid)其中fid为指定的文件标识符,其作用和fseek(fid,0,-1)是等效的。
4、feof函数用法feof 函数用来判断是否到达文件末尾。
调用方式如下:eofstat=feof(fid)其中fid为指定的文件标识符。
eofstat是返回值,当到达文件末尾时,eofstat为1;否则为0。
f=fopen('my_test.dat','r');>> A=fscanf(f,'%g',[4 2])A =0.4565 0.44470.8214 0.79190.6154 00.0185 0>>feof(f)ans=1%c读取字符型变量,也可以指定多个字符,'%3c'%s读取字符串变量%d读取整数型变量%f读取浮点数%g读取双精度浮点数3、fprintf函数功能fprintf(fileID, format, A)count = fprintf(...)fprintf写入返回数字的字节。
1、Format:使用单引号的字符串,它描述了输出字段的格式。
可以包括下列组合:百分号后跟一个转换字符,如'%s的为字符串'。
(1)转义字符(2)数值类型字符(3)字段宽度最小的字符数进行打印。
可以是一个数字或一个星号(*)是指输入列表中的一个论据。
例如,输入列表('%12d,intmax)相当于('%* D',12,intmax)。
精确宽度。