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值。
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)。
精确宽度。