MATLAB中的文件

m文件:

命令行方式程序可读性差,而且不能存储,对于复杂的问题,应编写成能存储的程序文件。包含matlab语言代码的文件称为m文件,其扩展名为m。

用户如想灵活应用matlab去解决实际问题,充分调用matlab的科学技术资源,就需要编辑m文件

编辑m文件可使用各种文本编辑器,matlab有内建的m文件编辑器,调用格式是:窗口菜单【File】-【New】-【M-File】。

已经编写好的M文件,也可以使用窗口菜单【File】-【Open M-file...】来打开、编辑、调试。

MAT文件

1 数据基本操作本节介绍基本的数据操作,包括工作区的保存、导入和文件打开。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, ...):通过正则表达式指定待保存的变量需满足的条件。● save('..., 'format'),指定保存文件的格式,格式可以为MAT文件、ASCII文件等。

1.2 数据导入MATLAB中导入数据通常由函数load实现,该函数的用法如下:● load:如果matlab.mat文件存在,导入matlab.mat中的所有变量,如果不存在,则返回error。● load filename:将filename中的全部变量导入到工作区中。● load filename X Y Z ...:将filename中的变量X、Y、Z等导入到工作区中,如果是MAT文件,在指定变量时可以使用通配符“*”。● load filename -regexp expr1 expr2 ...:通过正则表达式指定需要导入的变量。● load -ascii filename:无论输入文件名是否包含有扩展名,将其以ASCII格式导入;如果指定的文件不是数字文本,则返回error。● load -mat filename:无论输入文件名是否包含有扩展名,将其以mat格式导入;如果指定的文件不是MAT文件,则返回error。例1 将文件matlab.map中的变量导入到工作区中。首先应用命令whos –file查看该文件中的内容:>> whos -file matlab.matName Size Bytes ClassA 2x3 48 double arrayI_q 415x552x3 687240 uint8 arrayans 1x3 24 double arraynum_of_cluster 1x1 8 double arrayGrand total is 687250 elements using 687320 bytes将该文件中的变量导入到工作区中:>> load matlab.mat该命令执行后,可以在工作区浏览器中看见这些变量,如图1所示。图1 导入变量后的工作区视图接下来用户可以访问这些变量。>> num_of_clusternum_of_cluster =3

MATLAB中,另一个导入数据的常用函数为importdata,该函数的用法如下:

● importdata('filename'),将filename中的数据导入到工作区中;● A = importdata('filename'),将filename中的数据导入到工作区中,并保存为变量A;● importdata('filename','delimiter'),将filename中的数据导入到工作区中,以delimiter指定的符号作为分隔符;例2 从文件中导入数据。>> imported_data = importdata('matlab.mat')imported_data =ans: [1.1813 1.0928 1.6534]A: [2x3 double]I_q: [415x552x3 uint8]num_of_cluster: 3与load函数不同,importdata将文件中的数据以结构体的方式导入到工作区中。

1.3 文件的打开MATLAB中可以使用open命令打开各种格式的文件,MATLAB自动根据文件的扩展名选择相应的编辑器。需要注意的是open('filename.mat')和load('filename.mat')的不同,前者将filename.mat以结构体的方式打开在工作区中,后者将文件中的变量导入到工作区中,如果需要访问其中的内容,需要以不同的格式进行。例3 open与load的比较。>> clear>> A = magic(3);>> B = rand(3);>> saveSaving to: matlab.mat>> clear>> load('matlab.mat')>> AA =8 1 63 5 74 9 2>> BB =0.9501 0.4860 0.45650.2311 0.8913 0.01850.6068 0.7621 0.8214>> clear>> open('matlab.mat')ans =A: [3x3 double]B: [3x3 double]>> struc1=ans;>> struc1.Aans =8 1 63 5 74 9 2>> struc1.Bans =0.9501 0.4860 0.45650.2311 0.8913 0.01850.6068 0.7621 0.8214

文件操作函数

一、fopen函数

matlab中fopen函数在指定文件打开的实例如下:

*1)“fopen”打开文件,赋予文件代号。

语法1:fid= fopen(filename,permission)

用指定的方式打开文件

fid=+N(N是正整数):表示文件打开成功,文件代号是N.

fid=-1 : 表示文件打开不成功。

fid在此次文件关闭前总是有效的。

如果以读方式打开,matlab首先搜索工作目录,其次搜索matlab的其他目录,“permission”是打开方式参数。

打开方式参数由以下字符串确定:

r 读出

w 写入(文件若不存在,自动创建)

a 后续写入(文件若不存在,自动创建)

r+ 读出和写入(文件应已存在)

w+ 重新刷新写入,(文件若不存在,自动创建)

a+ 后续写入(文件若不存在,自动创建))

w 重新写入,但不自动刷新

a 后续写入,但不自动刷新

文件的存储格式:文件打开的默认方式是:二进制。以文本方式打开,可以在方式参

数“permission”中加入“t”文件将,如“rt”,“wt+”

使用文件的方式共有12种,下面给出了它们的符号和意义。

文件使用方式意义

"r"打开一个用于读取的文本文件

"w"创建一个用于写入的文本文件

"a"附加到一个文本文件

"rb"打开一个用于读取的二进制文件

"wb"创建一个用于写入的二进制文件

"ab"附加到一个二进制文件

"r+"打开一个用于读/写的文本文件

"w+"创建一个用于读/写的文本文件

"a+"打开一个用于读/写的文本文件

“rt”只读打开一个文本文件,只允许读数据

“wt”只写打开或建立一个文本文件,只允许写数据

“at”追加打开一个文本文件,并在文件末尾写数据

“rb”只读打开一个二进制文件,只允许读数据

“wb”只写打开或建立一个二进制文件,只允许写数据

“ab”追加打开一个二进制文件,并在文件末尾写数据

“rt+”读写打开一个文本文件,允许读和写

“wt+”读写打开或建立一个文本文件,允许读写

“at+”读写打开一个文本文件,允许读,或在文件末追加数据

“rb+”读写打开一个二进制文件,允许读和写

“wb+”读写打开或建立一个二进制文件,允许读和写

“ab+”读写打开一个二进制文件,允许读,或在文件末追加数据

对于文件使用方式有以下几点说明:

1) 文件使用方式由r,w,a,t,b,+六个字符拼成,各字符的含义是:

r(read): 读

w(write): 写

a(append): 追加

t(text): 文本文件,可省略不写

b(binary): 二进制文件

+: 读和写

2) 凡用“r”打开一个文件时,该文件必须已经存在,且只能从该文件读出。

3) 用“w”打开的文件只能向该文件写入。若打开的文件不存在,则以指定的文件名建立该文件,若打开的文件已经存在,则将该文件删去,重建一个新文件。

4) 若要向一个已存在的文件追加新的信息,只能用“a”方式打开文件。但此时该文件必须是存在的,否则将会出错。

5) 在打开一个文件时,如果出错,fopen将返回一个值-1。在程序中可以用这一信息来判别是否完成打开文件的工作,并作相应的处理。因此常用以下程序段打开文件:

6) if((fp=fopen("c:\\hzk16","rb"))=-1)

{

printf("\nerror on open c:\\hzk16 file!");

getch();

exit(1);

}

这段程序的意义是,如果返回的值为-1,表示不能打开C盘根目录下的hzk16文件,则给出提示信息“error on open c:\ hzk16 file!”,下一行getch()的功能是从键盘输入一个字符,但不在屏幕上显示。在这里,该行的作用是等待,只有当用户从键盘敲任一键时,程序才继续执行,因此用户可利用这个等待时间阅读出错提示。敲键后执行exit(1)退出程序。

7) 把一个文本文件读入内存时,要将ASCII码转换成二进制码,而把文件以文本方式写入磁盘时,也要把二进制码转换成ASCII码,因此文本文件的读写要花费较多的转换时间。对二进制文件的读写不存在这种转换。

8) 标准输入文件(键盘),标准输出文件(显示器),标准出错输出(出错信息)是由系统打开的,可直接使用。

注意!初学者往往会犯一个错误,即在输入文件名时不加后缀名,请注意加上!

二、fprintf函数

matlab中fprintf函数的具体使用方法实例如下:

fprintf函数可以将数据按指定格式写入到文本文件中。其调用格式为:

数据的格式化输出:fprintf(fid, format, variables)

按指定的格式将变量的值输出到屏幕或指定文件

fid为文件句柄,若缺省,则输出到屏幕

1 for standard output (the screen) or 2 for standard error. If FID is omitted, output goes to the screen.

format用来指定数据输出时采用的格式

%d 整数

%e 实数:科学计算法形式

%f 实数:小数形式

%g 由系统自动选取上述两种格式之一

%s 输出字符串

fprintf(fid,format,A)

说明:fid为文件句柄,指定要写入数据的文件,format是用来控制所写数据格式的格式符,与fscanf函数相同,A是用来存放数据的矩阵。

例子:

创建一个字符矩阵并存入磁盘,再读出赋值给另一个矩阵。

>> a='string';

>> fid=fopen('d:\char1.txt','w');

>> fprintf(fid,'%s',a);

>> fclose(fid);

>> fid1=fopen('d:\char1.txt','rt');

>> fid1=fopen('d:\char1.txt','rt');

>> b=fscanf(fid1,'%s')

b =

string

matlab读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)

三、fscanf函数

从文件中有格式地读数据 fscanf

语法1:[a,count]=fscanf(fid,format,size)

根据指定的格式从fid 文件按照格式format读出数据并按size的格式放入内存。

a :读出的数据放入内存的变量名

count :返回值n。n=0:失败、n>0:成功,n是读出数据个数。

fid :文件号,为fopen打开文件的返回值。

size :a的数据的维度,是一个[m n]的向量,m为行,n为列(注意,这里读取的顺序是按行读取,存储的时候是按列存储),若n取inf表示读到文件末尾。具体含义如下:

N : 列向量

inf : 读出文件全部数据

[M,N] : 读出数据以M*N的格式放入变量名a内

format :读出数据的格式,format是字符形式,与C语言基本相同。字符形式由“%”与字符集(d,i,o,u,x,e,f,g,s,c,…)搭配构成,%是format参数的起始符号,不可缺少。

fscanf()的format参数允许的格式为:

'%[*][width][modifiers]type’

[]中的内容根据需要供选,可缺省,%type必须要有,不可省。

%[modifiers]type:表一种类型转换符,如%hd表示short int类型转换符。它是format的核心。转换符的作用是将“数据”转换为转换符代表的数据类型,这里提到的数据必须能够转换为转换符代表的数据类型,fscanf读取数据时也只匹配这样的数据。

如fid指向一文件,其中只包含数据[123 [空格] 456],用“m=fscanf(fid, “%d”, n);”语句是将123这个数据转换为转换符”%d”所代表的数据类型即整型后保存到m中去。

%*[modifiers]type:表示跳过stream流中能够被转换为[modifiers]type所代表数据类型的数据不读,如在以上的文件中,用“m=fscanf(fid, “%*d%d”, n);”就可以跳过对123的读取,而将456转换为整型后保存到m中。

%*m[modifiers]type:表跳过stream流中能够被转换为[modifiers]type所代表数据类型的m个“字符”不读。如“m=fscanf(fid,“%*1d%d”, n);”是将23转换为整型后保存到m地址中去。

%width[modifiers]type:表示从stream流中读取width长度的“字符”来转换为[modifiers]type对应数据类型的数据。如“m=fscanf(pF, “%1d”, n);”是将1转换为整型后保存到m地址中去。

如:  %s:单字符读

%c:读space字符

例:s=fscanf(fid,'%s') 返回一个字符。

a=fscanf(fid,']') 返回一个五位十进制整数。

举个小例子:

内容:     13,1,3.4

3,2.1,23

1,12,2

4,5.4,6

现在为了读取001中的数据存在一个数组里,可以用如下方法

fid=fopen('001.txt');

data=fscanf(fid,'%f,%f,%f',[3,inf]) ;%这里得用单引号

fclose(fid);

这时data中的数据如下:

13    3     1     4

1     2.1   12    5.4

3.4   23    2     6

一、用matlab将二维数组写入txt文件

1.比方说 矩阵A 为A=[1 2 3;4 5 6];

那么程序 为

fid=fopen('A1.txt','w');

[b1 b2]=size(A);

for i=1:b1

for j=1:b2

fprintf(fid,'%d\n',A(i,j));

end

fprintf(fid,'\n');

end

fclose(fid);

这个方法,得到是一个列向量。

2.使用fopen命令

fid=fopen('result.txt','wt');  %打开文件

fprintf(fid,'%s','前向速度        横向速度        垂向速度       横倾角速度      纵倾角速度      偏航角速度');

fprintf(fid,'%s','       前向位置       横向位置       垂向位置        横倾角        纵倾角        偏航角');

fprintf(fid,'\n');

n

for i=1:m

fprintf(fid,'%f        ');

for j=1:12

fprintf(fid,'%3.6f       ',output(i,j));  %output(i,j)是输入数据

end

fprintf(fid,'\n');

end

fclose(fid); %关闭文件

2. Matlab读写excel文件函数

Matlab读写excel文件函数:xlsread合xlswrite(转载)

在实验编程中产生了需要将matlab运行的试验结果写入 excel,从excel中读数据的要求,这样就需要用到matlab操作excel表格的相关函数:xlsfinfo,xlsread合 xlswrite。

应用实例:

对如下文件数据处理转化:test.txt[code]

================25-Jul-2008 10:07:25 ===============

jink2005stop

H R S

T H R

S C H

R S M

H R S

N H R

S Q H

R S D

jink2005start

GGGY

-108. 172.

GGGT

-64. 132.

GGGE

-73. -149.

GGGH

58. -43.

GGAG

0. 0.

GGAP

0. 0.

GGAT

0. 0.

GGAM

-89. -4.

GGAN

66. 28.

jink2005stop

[/code]转存到test.xls的程序:[code]

function countResult(filename xlsfile)

% 读娶CSAResult.txt文件,统计到Excel表格中

% xlsRow为本文件写到excel文件excelResult.xls的起始行

fid = fopen(filename);

% Excel = actxserver('Excel.Application');

fRow = 0;

sheet = 1;

xlsRow = 1;

% 找出要用数据的第一行(jink2005start下面)

tline = strtrim(fgetl(fid));

matches = findstr(tline 'jink2005start');

while feof(fid) == 0 & length(matches) == 0

tline = strtrim(fgetl(fid));

matches = findstr(tline 'jink2005start');

end

seq = 'xxxx';

while feof(fid) == 0

tline = strtrim(fgetl(fid));

matches = findstr(tline 'jink2005stop');

if length(matches) > 0 %找到停止行标识,则开始再次寻找下面start处

tline = strtrim(fgetl(fid));

matches = findstr(tline 'jink2005start');

while feof(fid) == 0 & length(matches) == 0

tline = strtrim(fgetl(fid));

matches = findstr(tline 'jink2005start');

end

elseif length(tline) == 4

seq = tline;

elseif length(tline) ~= 0

% 开始将angle、seq写入excel表格

[token rem] = strtok(tline); %使用默认的空格分割字符串,第一个空格前在token里,剩下在rem里

M(1 1) =;

M(1 2) =;

M(1 3) =;

if xlsRow >

sheet = sheet + 1;

xlsRow = 1;

end

xlswrite(xlsfile M strcat('Sheet' num2str(sheet)) strcat('A' num2str(xlsRow)));

xlsRow = xlsRow + 1;

end

end

fclose(fid);

[/code]

运行方式如下:

[code]countResult('test.txt' 'test.xls'); [/code]

结果text.xls中的结果如下:

-108. 172. GGGY

-64. 132. GGGT

-73. -149. GGGE

58. -43. GGGH

0 0 GGAG

0 0 GGAP

0 0 GGAT

-89. -4. GGAM

66. 28. GGAN

参考文献:

matlab帮助文档

[url=Excel表格中[/color][/b][/url] [url=

jink2005 发表于 2008-8-10 12:50

程序改进:减少打开关闭excel次数,增加excel最大行限制处理

[code]

function countResult(filename xlsfile)

% 读娶CSAResult.txt文件,统计到Excel表格中

% xlsRow为本文件写到excel文件excelResult.xls的起始行

fid = fopen(filename);

% Excel = actxserver('Excel.Application');

sheet = 1;

xlsRow = 1;

% 找出要用数据的第一行(jink2005start下面)

tline = strtrim(fgetl(fid));

matches = findstr(tline 'jink2005start');

while feof(fid) == 0 & length(matches) == 0

tline = strtrim(fgetl(fid));

matches = findstr(tline 'jink2005start');

end

seq = 'xxxx';

mRow = 0;

while feof(fid) == 0

tline = strtrim(fgetl(fid));

matches = findstr(tline 'jink2005stop');

if length(matches) > 0 %找到停止行标识,则开始再次寻找下面start处

tline = strtrim(fgetl(fid));

matches = findstr(tline 'jink2005start');

while feof(fid) == 0 & length(matches) == 0

tline = strtrim(fgetl(fid));

matches = findstr(tline 'jink2005start');

end

elseif length(tline) == 4

seq = tline;

elseif length(tline) ~= 0

% 开始将angle、seq写入excel表格

[token rem] = strtok(tline); %使用默认的空格分割字符串,第一个空格前在token里,剩下在rem里

mRow = mRow + 1;

M(mRow 1) =;

M(mRow 2) =;

M(mRow 3) =;

% 每次M到达500行才写入excel减少开关excel操作

if mRow >= 500

if (xlsRow + 500) >

sheet = sheet + 1;

xlsRow = 1;

end

xlswrite(xlsfile M strcat('Sheet' num2str(sheet)) strcat('A' num2str(xlsRow)));

mRow = 0;

xlsRow = xlsRow + 500;

M = {};

end

end

end

% 文件读写结束M可能不足500行,将剩余M写入excel

xlswrite(xlsfile M strcat('Sheet' num2str(sheet)) strcat('A' num2str(xlsRow)));

fclose(fid);

return

[/code]

jink2005 发表于 2008-8-14 15:23

我遇到过的问题

>> countResult('CSAResult.txt');

Error using ==> xlswrite

Error: object returned error code: 0x800A03EC

Error in ==> countResult at 38

xlswrite('excelResult.xls' M strcat('A' num2str(xlsRow)));

——Matlab7.0中堤供的可以省略工作表参数的使用方法,好像不对,我省略后,它将后面的表格range作为表明来使用。工作表参数可能不能省略。

>> countResult('CSAResult.txt' 1);

Invoke Error Dispatch Exception:

Source: Microsoft Office Excel

Description: “excelResult.xls”为只读。要保存当前工作簿衬副本,请单击“确定”按钮,在“另存为”对话框中为副本指定一个名称。

Help File: D:Program FilesMicrosoft OfficeOFFICExlmain11.chm

Help Context ID: 0

Error in ==> countResult at 38

xlswrite('excelResult.xls' M 'Sheet1' strcat('A' num2str(xlsRow)));

Matlab有着强大的数据处理功能,经常需要从外部文件读取数据或将数据写到外部文件。Matlab和外部文件进行数据交换相关的命令,个人目前了解到的有以下几种。

(0)自己添加

你可以将txt的一些文本数据直接拷贝到matlab窗口,然后保存为mat文件,下次就可以直接采用load函数了。

(1)Load

load 从Matlab的数据文件.mat中读取变量数据,也可以从.txt .dat等文件中读取数据。使用load命令读取数据以后在Matlab中数据变量和文件同名。例如使用“load data.txt”后数据变量名即为data。

需要注意的是文件格式的不同,文件格式分为二进制格式和ASCII格式两种。如果是二进制格式的文件,可以使用load命令直接读取。但如果是ASCII格式的文件,需要保证数据是整齐的(每一行数据个数要一致),否则会出错。

例:

data.txt文件(ASCII格式)

0 1

1 2 3

0

使用“load data.txt”将会出错。

data1.txt文件

0 1 2

1 2 3

2 3 4

使用“load data1.txt”能顺利读入3*3矩阵。

和load相对应的写数据命令为save,一般存为.mat文件,save保存的文件格式为二进制格式。

二进制和ASCII的区别

从文件编码的方式来看,文件可分为ASCII码文件和二进制码文件两种。

ASCII文件也称为文本文件,这种文件在磁盘中存放时每个字符对应一个字节,用于存放对应的ASCII码。例如,数5678的存储形式为:

ASC码:00110101(5)  00110110(6)  00110111(7) 00111000(8) 共占用4个字节。ASCII码文件可在屏幕上按字符显示, 例如源程序文件就是ASCII文件,用DOS命令TYPE可显示文件的内容。由于是按字符显示,因此能读懂文件内容。

二进制文件是按二进制的编码方式来存放文件的。例如,数5678的存储形式为:00010110 00101110 (十进制5678转换成二进制)只占二个字节。二进制文件虽然也可在屏幕上显示,但其内容无法读懂。C系统在处理这些文件时,并不区分类型,都看成是字符流,按字节进行处理。输入输出字符流的开始和结束只由程序控制而不受物理符号(如回车符)的控制。因此也把这种文件称作“流式文件”。

(2)importdata

importdata根据文件名将数据导入到Matlab工作区。可以导入文件类型有很多,.txt .wav 等等。导入的数据(包括字符串和数值)以结构形式存放在工作区,可以使用whos命令来查看工作区的数据。

importdata可以导入load不能读取的长短不一的ASCII文件。当文件中既包含字符串又包含数值,而且数值长度个数不一时,可以使用importdata命令。注意读取的数值矩阵列数以文件中数值第一行的列数为标准。

例 test.txt

This is a test.

Start

0 1 2

1 2

1 2 3 4

运行A=importdata('test.txt')

结果:

A =

data: [4x3 double]

textdata: {2x1 cell}

A.data =

0 1 2

1 2 NaN

1 2 3

4 NaN NaN

A.textdata =

'This is a test.'

'Start'

另外,读取的字符串只能位于数值之前,位于数值之后的将被忽略。

例:test.txt

0 1 2

1 2

1 2 3 4

End.

运行A=importdata('test.txt')

结果:

A =

0 1 2

1 2 NaN

1 2 3

4 NaN NaN

除了importdata命令以外,还可以从菜单选项file-->import data...导入数据文件,效果和importdata命令一样。

(3)fopen

fopen打开一个文件并创建文件标识以供接下来的读写等操作。fopen命令本身不进行读操作。然后可以使用fscanf读取数据,根据需要对数据进行筛选编辑。

例:读取字符串的方法

data.txt

0 1 2

1 2 3

1 2 3

End.

fid=fopen('data.txt'); %打开文件,创建文件标识

A=fscanf(A,'%c'); %读取数据

fclose(fid); %关闭文件标识

i=findstr(A,'End'); %查找标识

B=A(1:i-3); %提取数据,换行为2个字符

C=str2num(B); %将数据转换成数值矩阵

结果:

A =

0 1 2

1 2 3

1 2 3

注意其中str2num同样需要保证数值矩阵中列数一致,如果不一致,则结果为空。

0 1 2

1 2

1 2 3

End.

结果C=[]

例:读取行的方法

fid1=fopen('data.txt');

fid2=fopen('numbers.txt','w');

while ~feof(fid1)

aline=fgetl(fid1);

if double(aline(1))>=48&&double(aline(1))<=57

fprintf(fid2,'%s\n',aline);

continue

end

end

fclose(fid1);

fclose(fid2);

numbers.txt即为按行保存的数值文件

还有另外的方法

在MATLAB中,来读取和写入文本文件是很简单的事。下面,就来简单介绍下。如果有其他问题,请留言。

一、读取文本文件

思路:

1、用fopen来打开一个文件句柄

2、用fgetl来获得文件中的一行,如果文件已经结束,fgetl会返回-1

3、用fclose来关闭文件句柄

比如,TIM_Grid_Data.txt的内容如下:

0.1 0.1 151.031 -12.3144 -29.0245 3.11285

0.1 0.2 120.232 -2.53284 -8.40095 3.3348

0.1 0.3 136.481 -0.33173 -22.4462 3.598

0.1 0.4 184.16 -18.2706 -54.0658 2.51696

0.1 0.5 140.445 -6.99704 -21.2255 2.4202

0.1 0.6 127.981 0.319132 -29.8315 3.11317

0.1 0.7 106.174 -0.398859 -39.5156 3.97438

0.1 0.8 105.867 -20.1589 -13.4927 11.6488

0.1 0.9 117.294 -11.8907 -25.5828 4.97191

0.1 1 79.457 -1.42722 -140.482 0.726493

0.1 1.1 94.2203 -2.31433 -11.9207 4.71119

那么可以用下面的代码来读取该文本文件:

fid=fopen('TIM_Grid_Data.txt','r');

best_data=[];

while 1

tline=fgetl(fid);

if ~ischar(tline),break;end

tline=str2num(tline);

best_data=[best_data;tline];

end

fclose(fid);

这样文本文件中的内容就读入到了best_data中了。

二、写入文本文件

思路:

1、用fopen打开一个文件句柄,但要用“w+”或“r+”等修饰符,具体参看help fopen

2、用fprintf写入数据

3、用fclose来关闭文件句柄

比如下面的程序:

fid=fopen('Data.txt','a+');

fprintf(fid,'Hello,Tim\r\n');

fprintf(fid,'http://blog.sina.com.cn/pengtim');

a=rand(1,10);

fprintf(fid,'%g\r\n',a);

fclose(fid);

打开Data.txt文件,可以看到:

Hello,Tim

http://blog.sina.com.cn/pengtim0.655741

0.0357117

0.849129

0.933993

0.678735

0.75774

0.743132

0.392227

0.655478

0.171187

所以,用MATLAB来进行操作文本文件是不是很简单啊。

matlab读文件函数程序,Matlab 文件读写函数相关推荐

  1. MATLAB读ArcGIS输出的dbf文件

    MATLAB读ArcGIS输出的dbf文件 dbfread函数 [使用说明]\ [dbfData, dbfFieldNames] = dbfread(filename, records2read, r ...

  2. bat文件·启动程序打开文件夹

    bat文件·启动程序&打开文件夹 不想每次打开机子继续上一次的工作时去手工一个一个滴开启程序和打开文件夹,故想写一个bat双击解决. 1.启动程序: start download.bat: @ ...

  3. linux文件操作函数程序,linux 文件操作函数

    文件操作(Linux) 常用linux函数库中的基本函数 1. close函数,关闭文件 2. creat函数,建立文件 3. dup.dup2函数,复制文件描述词 4. fcntl函数,文件描述词操 ...

  4. matlab中axis函数程序,matlab中axis函数

    % 计算函数值,zz 也是21x21的矩阵 为了方便测试立体绘图,MATLAB 提供了一个 peaks...meshz 可将曲面加上围裙: [x,y,z]=peaks; meshz(x,y,z); a ...

  5. matlab编写信号采集程序,MATLAB语音信号采集课程设计

    MATLAB语音信号采集课程设计 数字信号处理 课程设计报告 课设题目:语音信号的采集与处理 学 院:信息科学与工程学院 专 业:电子信息工程 班 级:电子0903 姓 名: 学 号: 指导教师:张海 ...

  6. matlab二维重建程序,matlab三维重建程序

    [实例简介] 基于matlab的,三维重建,程序内有多个M文件,找到main,即可运行 [实例截图] [核心代码] matlab三维重建程序 └── matlab三维重建程序 ├── fp3.bmp ...

  7. c语言删除文件remove_C程序删除文件

    原标题:C程序删除文件 C / C ++中的remove函数可用于删除文件. 如果成功删除文件,则该函数返回0,其他返回非零值. #include int main() { if (remove(&q ...

  8. matlab画伯德图开环程序,matlab伯德图开环闭环

    Matlab 中 Bode 图的绘制技巧 学术收藏 2010-06-04 21:21:48 阅读 54 评论 0 字号:大中小 订阅 我们经常会遇到使用 Matlab 画伯德图的情况,可能我们我们都知 ...

  9. matlab怎么跑.cpp程序,MATLAB编译cpp文件

    目的:打通MATLAB与VC之间的通道,实现用MATLAB调用VC程序,以及VC调用MATLAB程序. 上篇博客实现了将MATLAB的M文件编译成C/C++文件,exe应用程序.这篇实现MATLAB编 ...

最新文章

  1. 玩转springboot:配置文件详细讲解
  2. 给你一个K8S的“发行版”
  3. Oracle数据库里面查询字符串类型的字段不为空和为空的SQL语句:
  4. 看这玩意复习你还会挂科?《软件工程篇》
  5. STAR直接就可以输出readsCount,为什么还需要featurecounts?
  6. 一文掌握常用的机器学习模型(免费课程+送书福利)
  7. 过分了!耗资 5600 万、4 年开发的网络商城成“烂尾楼”,404 无法打开
  8. 用JAVA制作小游戏——飞机大战(三)
  9. Spring : Spring AOP源码解析
  10. 交叉方向乘子法(ADMM)算法
  11. 卡尔曼滤波器和六轴传感器姿态融合资料整理
  12. 软件构造过程与配置管理
  13. 上帝掷骰子吗?量子物理史话——读书笔记
  14. 微信小程序+vant组件 侧边导航栏切换显示
  15. Win10 Build 18237发布:登录屏幕启用毛玻璃特效
  16. 2017第二届上海DAC体验
  17. 关于Http请求GBK乱码转化的问题
  18. 学java有前途吗?方兴未艾!
  19. SSM出租车查询系统 毕业设计-附源码220915
  20. 二.ARM裸机学习之S5PV210刷机

热门文章

  1. NeuroImage:左缘上回和角回对情景记忆编码的贡献:一项颅内脑电图研究
  2. java 搜索 下拉列表框_用java编写随用户输入自动弹出下拉列表匹配项目,类似百度搜索...
  3. 2022.12.29
  4. RGBA与RGB和区别与转换
  5. Java基础之代理模式
  6. TensorFlow常用函数tf.where()、tf.gather()、tf.squeeze()详解!!
  7. 推荐浏览器屏蔽神器,含广告和自定义部分
  8. 美国计算机本科排名jjl,美国本科计算机专业排名(中)
  9. 设计模式总是学不会?是时候换个姿势了
  10. Android -- 小球周期旋转