转 matlab的各种数据读取(txt,dat,mat等格式)文件打开关闭
Matlab 的数据文件读取
Matlab 的数据文件I/ O 的实现方法0 引言Matlab 是一个功能强大的计算机辅助设计软件,被称为“草稿纸式的科学计算语言”,它具有强大的符号、数值计算、矩阵运算以及图形显示的功能,它被广泛地应用在数字信号处理、自动控制、图像处理、神经网络、优化设计、模糊逻辑、仿真、小波分析等方面。
Matlab 应用中常需要实现Matlab 与其他应用程序的数据共享,即需将数据文件读入Matlab 进行有效的数据处理,然后将Matlab 处理好的数据保存为数据文件,以便其他应用程序所使用。
Matlab 支持多种文件格式的输入和输出,如.dat 、.txt 、.mat 、.bmp 等。
在实际进行数据文件的I/ O 时常出现错误,本文详细讨论Matlab 中数据文件I/ O 的实现方法,并给出每种方法的具体实例。
所有的数据文件I/ O 操作文件都在Matlab 中,无需安装专门的工具箱。
数据文件I/ O 程序可分为两种基本类型:低级和高级。
高级包括一些专门的函数以支持特定格式的读和写,相对而言低级则比较灵活。
1 高级数据文件I/ O 方式命令高级数据文件I/ O 命令主要有Load 和Save 。
Save 可以将Matlab 变量以ASCII 码格式或MAT存储, Load 可以读ASCII 码格式的变量或MAT 文件到Mat2lab 工作区。
这两条命令的使用比较简单, (为便于读者可直接将以下文本输入计算机运行,注释采用英文) 如:%This file demonstrates the behavior of LOAD and SAVEclear all%Clear all variablesx = 5 ;x2 = 10 ; %Create x and x2whos %To ,display the variables in workspacepause %Pause so as to observesave xdata x%Save only x into xdata. matclear all%Clear all variablesload xdata%Load xdata. matwhos %Note that x is backpausex2 = 10 ; %Recreate x2whospausesave xdata x x2%Now save using a wild cardclear all%Clear all variablesload xdata%Load xdata. matwhos使用Load 和Save 还可以实现一次读多个文件或将数据存入多个文件,以Save 命令为例(Load 类似) ,程序如下:a = rand(6) ; %make a (6 3 6) random numberfilename = ['a1.txt';'a2.txt';'a3.txt';'a4.txt';'a5.txt';'a6.txt'; ] ; %list your file namesfor i=i:1ength(a)temp = a(:,i) ;save (filename (i , :) ,'temp''-ascii') ;%save to the specified fileenddlmread 和teatread 函数可以实现读入格式化的ASCII 码数据而不使用低级命令。
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文件各种操作方法(全)
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,则表示无法成功关闭该文件。
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中读取txt文件的几种方法
一、纯数据文件(没有字母和中文,纯数字)对于这种txt文档,从matalb中读取就简单多了例如test.txt文件,内容为“17.901 -1.1111 33.04517.891 -1.1286 33.04517.884 -1.1345 33.045”可以在command window中输入load test.txt ,然后就会产生一个test的数据文件,内容跟test.txt中的数据一样;另一种方法是在file/import data....../next/finish 也可产生一个叫test的数据文件。
二、中英文和数据如test1.txt“你好欢迎来到振动论坛1 11 111 11112 22 222 22223 33 333 33334 44 444 44445 55 555 5555”这样的文件怎么读入数据呢?方法有多种,现举两个比较简单实用的。
方法一:file/import data....../next/finish>> whosName Size Bytes Classdata 5x4 160 double arraytextdata 4x1 300 cell arrayGrand total is 54 elements using 460 bytes>> data1 11 111 11112 22 222 22223 33 333 33334 44 444 44445 55 555 5555>> textdatatextdata ='你好''欢迎来到''振动论坛'''方法二:[a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4)说明:%s可以是其他形式,跟读入的数据类型有关,比如这里也可以用%n,%f 等。
Matlab文件读取总结
Matlab⽂件读取总结matlab的⽂件读取函数功能可以读取各种⽂件类型,如⽂本⽂件和⼆进制⽂件,如下表所⽰:函数功能(⽂件要求)textscan从⽂本⽂件或字符串读取格式化数据(⼀⾏中有整数,浮点数,字符串等)(读取已打开⽂件)xlsread读取Excel⽂件importdata从⽂件加载数据load将⽂件变量加载到⼯作区(常见的MAT⽂件,也可以是⽂本⽂件,如txt,dat等)dlmread将 ASCII 分隔的数值数据⽂件读取到矩阵(读取⽂本⽂件)textread同textread(不推荐⽤textread,改⽤textscan)csvread读取逗号分隔值 (CSV) ⽂件,读取已打开⽂件fscanf读取⽂本⽂件中的数据,读取已打开⽂件textscan⽤法:C = textscan(fileID,formatSpec)C = textscan(fileID,formatSpec,N) %按formatSpec读取⽂件数据N次,指定'headerlines'跳过指定⾏数举例:test.txtdaa fsds sds sdv1 3.4 5.6 7.82 4.5 6.7 3.43 4.5 5.6 3.5fileID = fopen(test.txt);C = textscan(fileID,'%d %f %f %f','headerlines',1); % %d有符号整数 %f双精度浮点数 %s读取以空⽩或分隔符分隔的⽂本fclose(fileID);得到的C是⼀个cell类型的数据。
textscan与textread的区别:1. textread不⽤先fopen那个⽂件,适⽤于格式统⼀的txt⽂件的⼀次性⼤批量读取。
⽽使⽤textscan函数之前需要先⽤fopen函数打开要读取的⽂件并返回句柄fid。
2. 其次textread读取某个⽂件后,下次再⽤textread读取这个⽂件时,还是会从⽂件头开始读取。
Matlab文件操作及读txt文件(fopen,fseek,fread,fclose)
Matlab文件操作及读txt文件(fopen,fseek,fread,fclose) 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---读取.txt文件
Matlab---读取.txt⽂件Matlab读取 .txt⽂件这⾥提供两种⽅法:1,load()函数。
2,importdata()函数。
-----------------------------------------------------------------------------⼀、对于load()函数。
例⼦,data_txt.txt内容如下:0 1.000000 1.000000 1.0000001 3.000000 4.000000 5.0000002 5.000000 7.000000 9.0000003 7.000000 10.00000 13.000004 9.000000 13.00000 17.000005 11.00000 16.00000 21.00000example_load_txt.m 内容如下:clear all;close all;clc%对于类似的txt⽂件,不含有字符,只有数字data=load('F:\F桌⾯⽂件\data_txt.txt');x=data(:,1);y1=data(:,2);y2=data(:,3);y3=data(:,4);plot(x,y1,'r--',x,y2,'bo',x,y3,'ks')-----------------------------------------------------------------------------⼆、对于importdata()函数。
例⼦,data_txt_string.txt内容如下:i co c1 c20 1.000000 1.000000 1.0000001 3.000000 4.000000 5.0000002 5.000000 7.000000 9.0000003 7.000000 10.00000 13.00000example_importdata_txt.m 内容如下:clear all;close all;clc%只是第⼀⾏有字符,则使⽤importdata可直接读取数据data1=importdata('F:\F桌⾯⽂件\data_txt_string.txt');data2=data1.data; %若没有这⼀步,出不出来图。
matlab中将数据输出保存为txt格式文件的方法 (1)
将matlab中数据输出保存为txt或dat格式总结网上各大论坛,主要有三种方法。
第一种方法:save(最简单基本的)具体的命令是:用save *.txt -ascii xx为变量*.txt为文件名,该文件存储于当前工作目录下,再打开就可以打开后,数据有可能是以指数形式保存的.例子:a =[17 24 1 8 15;23 5 7 14 16 ;4 6 13 20 22 ;10 12 19 21 3 ;11 18 25 2 9 ];save afile.txt -ascii aafile.txt打开之后,是这样的:1.7000000e+0012.4000000e+001 1.0000000e+000 8.0000000e+000 1.5000000e+0012.3000000e+001 5.0000000e+000 7.0000000e+000 1.4000000e+001 1.6000000e+0014.0000000e+000 6.0000000e+000 1.3000000e+001 2.0000000e+001 2.2000000e+0011.0000000e+001 1.2000000e+001 1.9000000e+0012.1000000e+0013.0000000e+0001.1000000e+001 1.8000000e+0012.5000000e+001 2.0000000e+000 9.0000000e+000第二种方法:dlmwritedlmwrite('a.txt',a,'precision','%10.0f')或者是dlmwrite('a.txt',a,'delimiter', '\t')对于只有一行或者一列的数据,很适用,但是多行的,就乱了网上有很多这一类似的问题,但是都不是很理想第三种方法:fopen+fprintf下面主要介绍这种方法,可以解决以上问题:用fprintf命令:以上面的例子为例:第一种情况:>> a=[17 24 1 8 15;23 5 7 14 16 ;4 6 13 20 22 ;10 12 19 21 3 ;11 18 25 2 9 ];>> fid = fopen('b.txt','wt');fprintf(fid,'%g\n',a); # \n 换行fclose(fid);然后用写字板打开b.txt,内容如下:为列向量17234101124561218171319258142021215162239第二种情况:对上面的命令做一下改动:# \n 换行改为\t,table键>> fid = fopen('b.txt','w');fprintf(fid,'%g\t',a);fclose(fid);然后用写字板打开b.txt,内容如下:为行向量:17 23 4 10 11 24 5 6 12 18 1 7 13 19 25 8 14 20 21 2 15 16 22 3 9 第三种情况:综合上面的两个结果,我们编写以下命令:<A style="key: ,'wt');%写入文件路径[m,n]=size(a);for i=1:1:mfor j=1:1:nif j==nfprintf(fid,'%g\n',a(i,j));elsefprintf(fid,'%g\t',a(i,j));endendendfclose(fid);然后用写字板打开b.txt,内容如下:矩阵17 24 1 8 1523 5 7 14 164 6 13 20 2210 12 19 21 311 18 25 2 9说明:以上操作都是在当前的工作目录下完成!下面给出最一般的模型,大家可以试着自己操作,如果需要dat格式,直接把txt换为dat就可以fid=fopen('C:\Documents and Settings\cleantotal.ped','wt');%写入文件路径matrix=input_mattrix %input_matrix为待输出矩阵[m,n]=size(matrix);for i=1:1:mfor j=1:1:nif j==nfprintf(fid,'%g\n',matrix(i,j));elsefprintf(fid,'%g\t',matrix(i,j));endendendfclose(fid);×××××××××××××××××××××××××××××××××××××××××××××××××××××××××下面附了具体的matlab的fopen和fprintf函数具体解释,当然help一下是可以知道的,只是为了方便大家matlab中fopen函数在指定文件打开的实例如下:*1)“fopen”打开文件,赋予文件代号。
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函数:用于返回数组的维度。
matlab中将数据保存为txt或dat格式四种方案
matlab中将数据保存为txt或dat格式四种方案——胡总结网上各种资源,列出以下的四种方法(以txt为例)。
第一种方法:save(最简单基本的)具体的命令是:用save *.txt -ascii xx为变量*.txt为文件名,该文件存储于当前工作目录下,再打开就可以打开后,数据有可能是以指数形式保存的.例子:a =[17 24 1 8 15;23 5 7 14 16 ;4 6 13 20 22 ;10 12 19 21 3 ;11 18 25 2 9 ];save afile.txt -ascii a; %保存文本文档的文件名afile.txt打开之后,是这样的:1.7000000e+0012.4000000e+001 1.0000000e+000 8.0000000e+000 1.5000000e+0012.3000000e+001 5.0000000e+000 7.0000000e+000 1.4000000e+001 1.6000000e+0014.0000000e+000 6.0000000e+000 1.3000000e+001 2.0000000e+001 2.2000000e+0011.0000000e+001 1.2000000e+001 1.9000000e+0012.1000000e+0013.0000000e+0001.1000000e+001 1.8000000e+0012.5000000e+001 2.0000000e+000 9.0000000e+000第二种方法:dlmwritedlmwrite('a.txt',a,'precision','%10.0f')或者是dlmwrite('a.txt',a,'delimiter', '\t')对于只有一行或者一列的数据,很适用,但是多行的,就乱了网上有很多这一类似的问题,但是都不是很理想第三种方法:fopen+fprintf(最常用)下面主要介绍这种方法,由以下的前两种情况最终导出第三种情况可以完美的解决以上问题。
matlab读取工作区指定文件的函数语句
Matlab有多种函数可用于读取MATLAB工作区的指定文件。
下面是其中一些常见的函数:
1. load函数:可以用来读取MAT文件中的数据。
该函数可以使用工作空间的路径作为参数,将文件数据导入到MATLAB工作区的指定变量中。
其中load函数中的变量不需要预先声明。
2. dlmread函数:主要用于读取具有固定列数的文件数据。
该函数需要知道文件的列数,文件路径和文件名作为参数。
当读取的数据不符合设定的格式时,会产生错误信息。
3. fscanf函数:是将文件数据输入MATLAB工作区的一种方式。
该函数可以用来读取特定类型的文件,如CSV文件、TXT文件等,并且可以一次读取多个数据行。
函数中的格式控制符用于指定数据类型和输入格式。
4. fopen函数:主要用于打开指定文件。
此函数需要知道文件的路径和文件名作为参数。
此函数提供了一个句柄用于后续文件读取,句柄是可以被传递和引用的。
5. fclose函数:用于关闭打开的文件,使MATLAB可以对其他操作进行内存操作。
在使用这些函数时,我们需要注意,对于一些文件格式,可能需要使用相应的专门函数,以确保读取正确。
同时,还可以使用save 函数将数据保存至MATLAB工作区,并且可以选择多种保存格式,如时间序列、带时间的结构体、结构体和数组等。
这些功能将为数据处理和仿真提供极大的便利。
Matlab的数据读取操作
Matlab的数据读取操作Matlab的数据读取操作[转]2012-08-10 22:47:08Matlab网站用两个例子非常详尽地介绍了各个命令的基本用法,实际中,面对手头上的数据,如何选用合适的命令呢?以下结合几个示例给出一些总结,大家举一反三就可以了:1. 纯数据(列数相同):源文件:CODE:0 3866.162 2198.938 141.1401 3741.139 2208.475 141.2522 3866.200 2198.936 141.1563 3678.048 2199.191 141.2304 3685.453 2213.726 141.2615 3728.769 2212.433 141.2776 3738.785 2214.381 141.2567 3728.759 2214.261 141.2288 3748.886 2214.299 141.2439 3748.935 2212.417 141.25310 3733.612 2226.653 141.23611 3733.583 2229.248 141.22312 3729.229 2229.118 141.186解答:对于这个txt文件,由于各行列数相同,故简单地使用load,importdata均可。
2.字段名(中、英文字段均可)+数据:源文件:CODE:CH0 CH1 CH2 CH30.000123 0.000325 0.000378 0.0005980.000986 0.000256 0.000245 0.000698解答:由于是记录的形式,因此各行列数必相同(缺少部分列时请自行在文件中补上 Inf 或 NaN),故直接使用 importdata 便可。
3.注释(含有独立的数字串)+数据(列数相同):问题:这个文件有4列,但前6行是文字说明,4列数字是从第8行开始的.现在我想把这个文件的前2列和文字说明提出来组成一个新的dat文件源文件:CODE:Group 2 12.02.2006 LimeiSamples of datas: 50000CH0 CH1 CH2 CH30.000123 0.000325 0.000378 0.0005980.000986 0.000256 0.000245 0.000698目标文件:CODE:Group 2 12.02.2006 LimeiSamples of datas: 50000CH0 CH10.000123 0.0003250.000986 0.000256解答:由于注释中含有独立的数字串,且注释部分没有明显的格式,这时候用importdata, load等高级命令直接读取会失败,用textread, dlmwrite 等格式化命令也不太合适,因此只能使用低级命令进行读取。
MATLAB文件操作
2.文本文件的读写
(1)fscanf函数和fprintf函数 fscanf函数用于读取文本文件的内容,fprintf函数用于将数据写入文本 文件中。调用格式为: [A,count]=fscanf(fid,fmt,size)
count=fprintf(fid,fmt,A)
其中,A用于存放读写的数据,count返回成功读写的数据元素个数; 参数fid为文件标识号,fmt用以控制读取的数据格式,size用于指定A的 大小。
4.数据文件定位
1 fseek函数 该函数用于改变文件位置指针的位置,其调用格式为: fseek(fid, offset, origin)
其中参数fid为文件识别号,offset表示位置指针相对移动的字节数;origin 表示位置指针移动的参照位置。
origin的可取值: • 'cof '或0表示文件指针的当前位置 • 'bof '或-1表示文件的开始位置 • 'eof'或1表示文件的结束位置。 例如: fseek(fid,0,-1) fseek(fid,-5,'eof')
例2 计算y=exsinx,其中x∈[0,2π ]。将x、y写入二进制 文件“模拟数据.dat”。
fid=fopen('模拟数据.dat','w'); x=linspace(0,2*pi,100); y=exp(x).*sin(x); count=fwrite(fid, [x; y], 'double'); fclose(fid);
文件的使用方式: • 'r': 以读方式打开一个文件。 • 'w':以写方式打开一个文件。 • 'a':在该文件尾添加数据。 • 'r+':以读和写方式打开一个文件。
MATLAB学习笔记 - 读取txt、mat、Excel等文件
检验结果可以看出是正确的,但是我想下面用debug来显示一下其中变量的变化情况,自己感觉是比较复杂的,因为从结构体,cell等数据变来变去的,可能我的程序把原来简单的问题复杂化了,但是的确没有找到更好的办法。
【3】读取中英文混乱txt
fidin=fopen('test.txt'); % 打开test2.txt文件
fidout=fopen('mkmatlab.txt','w'); % 创建MKMATLAB.txt文件
while ~feof(fidin) % 判断是否为文件末尾
tline=fgetl(fidin); % 从文件读行
% txt文件中含有一个数据项
% 输出cell格式以免各txt中数据长度不同
%
% 原始版本:V1.0 作者:李鹏
A = dir(fullfile(path,'*.txt'));
% 读取后A的格式为
% name -- filename
% date -- modification date
% bytes -- number of bytes allocated to the file
%
A = dir(fullfile(path,'*.mat'));
% 读取后A的格式为
% name -- filename
% date -- modification date
% bytes -- number of bytes allocated to the file
% isdir -- 1 if name is a directory and 0 if not
Matlab中txt文件的读写操作命令及操作
Matlab中txt文件的读写操作命令及操作Matlab中txt文件的读写操作命令整理将txt文件中的数据按行显示输出内容:从一个列向量文件中按要求读取指定部分数据后存储成另一个文件。
clear; clc; close all;%k=1:.1:50;%save org_di.txt k-ascii; %用save格式受限制fid=fopen('org_di.txt'); %原始数据是单列多行%temp=fread(fid); %用fread法读出的数据有问题,类似32,43等temp=fscanf(fid,'%f');%temp=load ('org_di.txt'); %n=length(temp);m=5;for k=1:2^m %指定保存前面部分内容?temp1(k)=temp(k);end% save org_di2.txt -ascii temp1;fclose(fid);fid=fopen('org_di2.txt','w');fprintf(fid,'%f \r\n',temp1(1,:)); %若直接用temp1,则依然是多行单列,并没有在每行后面加回车换行,只是在最后加的回车换行。
可以直接用temp1fclose(fid);文件操作是一种重要的输入输出方式,即从数据文件读取数据或将结果写入数据文件。
MATLAB提供了一系列低层输入输出函数,专门用于文件操作。
1、文件的打开与关闭1) 打开文件fopen在读写文件之前,必须先用fopen函数打开或创建文件,并指定对该文件进行的操作方式。
fopen函数的调用格式为:fid=fopen(文件名,‘打开方式’)说明:其中fid用于存储文件句柄值,如果返回的句柄值大于0,则说明文件打开成功。
文件名用字符串形式,表示待打开的数据文件。
常见的打开方式如下:'r' :只读方式打开文件(默认的方式),该文件必须已存在。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Name
Size
Bytes Class Attributes
data
3x3
72 double
tex tdata
4x1
314 cell
2. 使用函数来读取文本数据
若要在命令行或在一个 M 文件中读取数据,必须使用 MATLAB 数据函数,函数的选择则是依据文本文件中数据的格式。
而且文本数据格式在行和列上必须采取一致的模式,并使用文本字符来分隔各个数据项,称该字符为分隔符或列分隔
0.3445 0.8433 0.7865 0.7562 0.4233 0
/blog-907194-688272.html
征。
/blog-907194-688272.html
2/12
2014年4月29日
表2-2 读取函数的比较 函数 数据类型 分隔符 返回值 c sv read 数值数据 仅cooma 1 dlmread 数值数据 任何字符 1 fscanf 字母和数值 任何字符 1 load 数值数据 仅space 1 tex tread 字母和数值 任何字符 多返回值
符。分隔符可以是space、comma、semicolon、ab或其他字符,单个的数据可以是字母、数值字符或它们的混合形式。
文本文件也可以包含称之为头行的一行或多行文本,或可以使用文本头来标志各列或各行。在了解要输入数据的格式之
后,便可以使用 MATLAB 函数来读取数据了。若对 MATLAB 函数不熟悉,可从表2-2中了解几个读取函数的一些使用特
图2-2 使用模板查看各变量数据 在默认情况下,导入模板将文件中所有的数值数据放在一个变量中;若文件包含文本数据,则模板将它们放在另外一个 变量中;若文件包含行或列,模板也将它们作为各自独立的变量分别称为行头和列头。 当所有导入模板创建好数据后,使用whos命令可以查看工作空间的变量。 >> whos
魏萌
加为好友
给我留言
打个招呼
发送消息
作者的其他最新博文 全部
• [转载]转 如何提高英文的科研 写 • [作转能载力]M(A施 TL一AB公绘)图功能 • 关于grads加权平均/求和的问 题 • [转载] 蒲慕明教授的e-Mail • action!
热门博文导读
全部
• 关于废除各高校马克思主义… • 答:毕业四年,感伤、失落… • 千万不要与猪摔跤! • 失落的古城池之七:哥伦比… • 学术2.0:从教学学术到社会… • 赤脚院士、科学泰斗
/blog-907194-688272.html
1/12
2014年4月29日
科学网—[转载]转 matlab的各种数据读取(txt,dat,mat等格式),文件打开关闭 - 魏萌的博文
end 若文件fileex am1不存在,则显示如下信息。 Cannot open file.existence?permissions?memory?...
Name
Size
By tes
Class Attributes
data
3x3
72
double
my _data
3x4
96 double
tex tdata
4x1
314
cell
此时可以查看与该文件同名的变量的值
>> my_data
my_data =
0.3242 0.4324 0.3455 0.6754 0.4566 0.9368 0.9892 0.9274 0.4658 0.2832 0.9373 0.8233 若想将工作空间的变量以该文件名命名,则可以使用函数形式的load,下面的语句将文件导入工作空间并赋给变量A A=load('my _data.tx t'); 4. 读取有分隔符的ASCII数据文件 如果数据文件不使用空格符而是使用逗号或是其他符号作为分隔符,用户可以选择多个可用的导入数据函数。最简单的 便是使用函数dlmread。 举个例子来说,一个名为lcode.dat的数据文件,数据内容由逗号分隔。 0.3445,0.8433,0.7865 0.7562,0.4233,0 要把该文件的全部内容读入阵列A,只须输入如下命令: >> A=dlmread('lcode.dat',',') 即可以把数据文件中使用的分隔符作为函数dlmread的第二个参数。 注意: 即使每行的最后一个数据后面不是逗号,dlmread函数仍能正确读取数据,因为dlmread忽略了数据之间的空格符。因 此,即使数据为如下格式,前面的dlmread命令仍能正常工作。 A=
相关博文
• 该做的和不该做的- LetPub … • 基于手性D-氨基酸形成机制… • 关于地沟油的三种检测方法… • 程序猿的记忆唤醒 • 新的荧光探针可以特异的识… • 做一个无愁河边的浪荡汉子
fopen函数有两个返回值,一个是返回一个文件标志(file Identifier),它会作为参数被传入其他对文件进行读写操作的命 令,通常是一个非负的整数,可用此标识来对此文件进行各种处理。如果返回的文件标识是–1,则代表fopen无法打开文 件,其原因可能是文件不存在,或是用户无法打开此文件权限。另一个返回值就是message,用于返回无法打开文件的原 因。为了安全起见,最好在每次使用fopen函数时,都测试其返回值是否为有效值。 下面以脚本m文件为例来声明文件的打开。 例2-1 %exam1.m [f,message]=fopen('fileexam1', 'r') if f==-1 disp (message); %显示错误信息
注册 | 登录
博客首页
博文
动态
微博
博文
相册
主题
分享
好友
留言板
[转载]转 matlab的各种数据读取(txt,dat,mat等格式),文件打开关闭
已有 11703 次阅读 2013-等 matlab
MATLAB提供了多种方式从磁盘读入文件或将数据输入到工作空间,即读取数据,又叫导入数据;将工作空间的变量存储 到磁盘文件中称为存写数据,又叫导出数据。至于选择哪种机制,则根据下面两个因素决定: ● 用户所执行的操作是导入数据还是导出数据; ● 数据的格式为文本格式、二进制格式还是如HDF之类的标准格式。 将数据导入MATLAB中最容易的方法就是使用导入数据模板(Import Wizard),使用该模板时不需要知道数据的格式,只需 指定包含这些数据的文件,然后导入模板会自动处理文件内容。 本章重点内容如下: ● 文件的打开和关闭 ● 文本文件的读取 ● 存写ASCII数据 ● 二进制数据的读取 ● 二进制数据的存写 ● 使用I/O文件函数进行数据读写 ● MAT 文件的读写
2014年4月29日
构建全球华人科学博客圈 返回首页
科学网—[转载]转 matlab的各种数据读取(txt,dat,mat等格式),文件打开关闭 - 魏萌的博文
微博
RSS订阅 帮助
mynightwish的个人博客 分享
ht t p://blog.scie nce ne t .cn/u/mynight w ish
english math physic joe 80 90 60 susan 78 98 88 rob 67 90 89
图2-1 将数据通过模板导入 在图2-1中,导入模板已辨认space字符,把它作为文件中数据的分隔符,并建立了两个变量:data(包含文件中所有数值 数据)和tex tdata(包含文件中所有文本数据)。 当导入模板正确导入文件中的数据后,就会显示它所建立的变量。要选择一个变量来导入数据,可单击它名称后面的复 选框。在默认情况下,所有变量都会被选中。在导入对话框的右面显示了导入模板建立的变量内容。要查看其他变量, 只需要单击该名称。在选择好要导入的变量后,单击Nex t按钮,如图2-2所示。
科学网—[转载]转 matlab的各种数据读取(txt,dat,mat等格式),文件打开关闭 - 魏萌的博文
3. 读取数值文本数据 若用户的数据文件只包含数值数据,则可以使用许多MATLAB函数,这取决于这些数据采用的分隔符。若数据为矩形形 状,也就是说,每行有同样数目的元素,这时可以使用最简单的命令load(load也能用于导入MAT文件,该文件为用于存储 工作空间变量的二进制文件,如果文件名后缀是.dat,则MATLAB会以MAT文件格式进行读取)。 例如,文件my _data.tx t包含了两行数据,各数据之间由spac e字符隔开。 当使用load时,它将读取数据并在工作空间中建立一个与该文件同名的变量,但不包括扩展名。 >>load my_data.txt; 调用whos命令查看工作空间的变量。 >> whos
例2-2 %exam2.m [f,message]=fopen('fileexam2', 'r'); if f==-1 disp (message); %显示错误信息 else
disp(f); end 若文件fileex am2存在,则返回f值。 2.1.2 文件的关闭 一旦完成文件的读写,最好关闭文件,以便对其进行其他操作。这时就可以使用fclose函数来关闭文件,其适用语法如 下。 fclose(f) 其中f为打开文件的标志,若fclose函数返回值为0,则表示成功关闭f标志的文件;若返回值为–1,则表示无法成功关闭该 文件。一般来说,在完成对文件的读写操作后就应关闭它,以免造成系统资源浪费。此外,需注意的是,打开和关闭文 件都比较耗时,因此为了提高程序执行效率,最好不要在循环体内使用文件。 若要一次关闭打开的所有文件,可以使用下面的命令: fclose all 2.2 文 本 数 据 虽然MATLAB自带的MAT文件为二进制文件,但为了便于和外部程序进行交换以及方便查看文件中的数据,也常常采用文 本数据格式与外界进行数据交换。在文本格式中,数据采用ASCII码格式,可以表示字母和数字字符。ASCII文本数据可以 在文本编辑器中查看和编辑。MATLAB提供多种函数能够进行文件读写,这些函数都是MATLAB的一部分,不需要额外的 工具箱支持。 2.2.1 从文本文件中读取数据 1.使用导入模板来读取数据 使用导入模板来读取数据,需按以下步骤进行: (1) 选择File→Import Data选项,然后弹出一个文件选择对话框;也可以使用uiimport函数来打开导入数据模板。 (2) 在文件选择对话框中选择想导入数据的文本文件,然后单击Open按钮,导入数据模板就会打开该文件并准备处理其 内容。 (3) 指定用于分开单个数据的字符,该字符称为分隔符或列分隔符。在多数情况下可以用导入模板来设定分隔符。 (4) 选择要导入的变量。在默认情况下,导入模板将所有的数值数据放在一个变量中,而将文本数据放在其他变量中。 (5) 单击Finish按钮完成数据的导入。 当使用导入模板来打开一个文本文件时,在导入模板对话框的预览区仅显示原始数据的一部分,通过它,用户可以验证 该文件中的数据是否为所期望的。导入模板也根据文件中的数据分隔符来对导入的数据进行预处理。在导入模板中打开 工作区中的grade.tx t文件。