加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

[转载]在Matlab中保存文件及导入文件

(2013-01-10 20:35:15)
标签:

转载

分类: matlab应用

  MATLAB是一个多功能集成软件,不同的功能需要使用不同的文件格式去表现,所以MATLAB的文件也有多种格式。最基本的是M文件、数据文件和图形文件,除此之外,还有MEX文件、模型文件和仿真文件等。下面分别予以说明。

(1) M文件,以.m为扩展名,所以称为M文件。M文件是由一系列MATLAB语句组成的文件,包括命令文件和函数文件两类,命令文件类似于其他高级语言中的主程序或主函数,而函数文件则类似于子程序或被调函数。

MATLAB众多工具箱中的(函数)文件基本上是M函数文件。因为它们是由ASCII码表示的文件,所以可由任一文字处理软件编辑后以文本格式存放。

(2) 数据文件,以.mat为扩展名,所以又称MAT文件。在讨论工作空间窗口时已经涉及到MAT文件。显然,数据文件保存了MATLAB工作空间窗口中变量的数据。

(3) 图形文件,以.fig为扩展名。主要由MATLAB的绘图命令产生,当然也可用File菜单中的New命令建立。

(4) MEX 文件,以.mex或.dll为扩展名,所以称MEX 文件。MEX 实际是由MATLAB Executable缩写而成的,由此可见,MEX文件是MATLAB的可执行文件。

(5) 模型和仿真文件,模型文件以.mdl为扩展名,由Simulink仿真工具箱在建立各种仿真模型时产生。仿真文件以.s为扩展名。

转自:http://liangshzh0816.blog.163.com/blog/static/34776762010634430585/

在matlab中要将大规模的矩阵写入到txt文本中,可以用文件读写的方法,如下例: 
fid=fopen('D:data.txt','wt');%写入文件路径 
[m,n]=size(p); %获取矩阵的大小,p为要输出的矩阵 
for i=1:1:m 
  for j=1:1:n 
     if j==n %如果一行的个数达到n个则换行,否则空格 
        fprintf(fid,'%4.3fn',p(i,j)); 
    else 
       fprintf(fid,'%4.3ft',p(i,j)); 
    end 
  end 
end 
fclose(fid); %关闭文件

matlab中如何读取TXT数据文件
今天需要做个matlab读取txt文件,在网上收集了下,查到了几篇不错的,总结一下,方便大家(包括me)使用:

下面这个函数是取filein中的第line行写入fileout中的程序,如果想实现取特定几行,只要稍微修改一下就可以。

function dataout=dataread(filein,fileout,line)

fidin=fopen(filein,'r');

fidout=fopen(fileout,'w');

nline=0;

while ~feof(fidin) % 判断是否为文件末尾

tline=fgetl(fidin); % 从文件读行

nline=nline+1;

if nline==line

fprintf(fidout,'%sn',tline);

dataout=tline;

end

end

fclose(fidin);

fclose(fidout);

%%%%%%%%%%%%%%%%%%%%%%%%%%

调用格式:dataout=dataread(filein,fileout,line)

如果你的txt文件数据是矩阵形式的,而没有其它的文字,用下面的程序就可以读任意行任意列的数据

a=textread('ll.txt');

t=a(1:43,4:10);

1:43是1到43行,4:10是4到10列的数据,当然也可以只读一个数据,如果你的matlab没有textread函数,直接从mathworks网站下载就行。

根据txt文档不同种类介绍不同的读取数据方法

转自:http://hi.baidu.com/youngbrave/blog/item/878db31fcd4f220f304e15bb.html

一、纯数据文件(没有字母和中文,纯数字)

对于这种txt文档,从matalb中读取就简单多了

例如test.txt文件,内容为“17.901 -1.1111 33.045

17.891 -1.1286 33.045

17.884 -1.1345 33.045”

可以在command window中输入load test.txt ,然后就会产生一个test的数据文件,内容跟test.txt中的数据一样;另一种方法是在file/import data....../next/finish 也可产生一个叫test的数据文件。

二、中英文和数据如test1.txt

“你好

欢迎来到

振动论坛

vib.hit.edu.cn

1 11 111 1111

2 22 222 2222

3 33 333 3333

4 44 444 4444

5 55 555 5555”

这样的文件怎么读入数据呢?

方法有多种,现举两个比较简单实用的。

方法一:

file/import data....../next/finish

>> whos

Name  Size  Bytes Class

data  5x4  160 double array

textdata  4x1  300 cell array

Grand total is 54 elements using 460 bytes

>> data

data =

11  111  1111

22  222  2222

33  333  3333

44  444  4444

55  555  5555

>> textdata

textdata =

'你好'

'欢迎来到'

'振动论坛'

'vib.hit.edu.cn'

方法二:

[a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4)

说明:%s可以是其他形式,跟读入的数据类型有关,比如这里也可以用%n,%f等。

这里%s的个数和[a1,a2,a3,a4]对应。

>> [a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4)

a1 =

'1'

'2'

'3'

'4'

'5'

a2 =

'11'

'22'

'33'

'44'

'55'

a3 =

'111'

'222'

'333'

'444'

'555'

a4 =

'1111'

'2222'

'3333'

'4444'

'5555'

因以字符串的形式读入,所以有''。

————————————————————————————————

三、中文 数据 英文混乱如test.txt

你好

1 11 111 1111

欢迎来到

2 22 222 2222

振动论坛

3 33 333 3333

vib.hit.edu.cn

4 44 444 4444

5 55 555 5555

说明:这种内容格式的文件用上面的方法是不行的。

以下是由chinamaker编写的一种方法:

fidin=fopen('test.txt');  % 打开test2.txt文件

fidout=fopen('mkmatlab.txt','w');  % 创建MKMATLAB.txt文件

while ~feof(fidin)  % 判断是否为文件末尾

tline=fgetl(fidin);  % 从文件读行

if double(tline(1))>=48&&double(tline(1))<=57  % 判断首字符是否是数值

fprintf(fidout,'%snn',tline);  % 如果是数字行,把此行数据写入文件MKMATLAB.txt

continue  % 如果是非数字继续下一次循环

end

end

fclose(fidout);

MK=importdata('MKMATLAB.txt');  % 将生成的MKMATLAB.txt文件导入工作空间,变量名为MK,实际上它不显示出来

>> MK

MK =

11  111  1111

22  222  2222

33  333  3333

44  444  4444

55  555  5555

转自:http://liangshzh0816.blog.163.com/blog/static/3477676201122310405816/?suggestedreading&wumii


一、保存文件

1、保存整个工作区

File->Save Workspace as...一个.mat文件

2、保存工作区的变量

在左工作区右击变量名,create M-File

3、save命令

(1)save

将工作区中的所有变量保存在当前工作区中的文件里,文件名为matlab.mat. MAT文件可通过load函数再次导入工作区

(2)save('filename')

将工作区中的所有变量保存为一个文件,文件名由‘filename’指定,默认为当前路径

(3)save('filename','var1','var2',...)

保存指定的变量在filename指定的文件中

二、导入文件

1、load

(1)load: 如果matlab.mat存在,则导入matlab.mat中的所有变量,如果不存在则返回error。

(2)load filename: 将filename中的全部变量导入到工作区中

(3)load filename XYZ:将filename中的变量X,Y,Z导入到工作区中,如果是MAT文件,在指定变量时可用通配符“*”

2、whos -file matlab.mat

3、importdata

与load函数不同,将文件中的数据已结构体方式写入

(1)importdata('filename')

(2)A=importdata('filename')

4、open

Matlab使用open打开各种格式的文件,自动根据扩展名选择相应的编辑器。

open('filename'): 以结构体的方式打开在工作区中,与importdata('filename')类似;而load('filename')将文件中的变量导入工作区中,如果要访问其中的内容,需要以不同的格式进行。

5、从xls中读取数据

data1=xlsread('c:usersfile1.xls')

无论07版的xlsx还是03版的xls都用xlsread读。

转自:http://blog.sina.com.cn/s/blog_685184d70100scyc.html


0

  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有