用matlab读取一个txt文件,并存储到一个cell型数组,急求啊

如题所述

txt数据分为以下几类:对应方法如下:
一、纯数据文件(没有字母和中文,纯数字)
对于这种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 =
1 11 111 1111
2 22 222 2222
3 33 333 3333
4 44 444 4444
5 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,'%s\n\n',tline); % 如果是数字行,把此行数据写入文件MKMATLAB.txt
continue % 如果是非数字继续下一次循环
end
end
fclose(fidout);
MK=importdata('MKMATLAB.txt'); % 将生成的MKMATLAB.txt文件导入工作空间,变量名为MK,实际上它不显示出来
>> MK
MK =
1 11 111 1111
2 22 222 2222
3 33 333 3333
4 44 444 4444
5 55 555 5555
MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。一般读取txt文件使用MATLAB即可。
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-03-21
这得看你txt里是什么样格式的数据。一般是先建立一个CELL。然后读取了txt的内容,存到相应的位置中,方便的话,可以给我看看你的txt,我给你写几行代码追问

第一行内容就是

    aggcacggaaaaacgggaataacggaggaggacttggcacggcattacacggaggacgaggtaaaggaggcttgtctacggccggaagtgaagggggatatgaccgcttgg

然后有四十行

然后文件名叫做Art-model-data

其实就是数学建模国赛2000年的a题啦,刚学matlab,对好的编程不太懂,谢咯

追答

你是想怎么存,一个字母占一个单元?我给你写几个代码,你自己看着加工下。
构建cell
a=cell{1,1}

打开文件读取的程序
fp_r=fopen(fullfile(路径名\Art-model-data,'r');
re=fscanf(fp_r, '%s ');
将数据存到cell里
a{1,1}=re;

本回答被提问者和网友采纳

matlab读取txt文件,文件第一行是中文,之后是ascall码。
fid=fopen('a.txt','r');i=1;while ~feof(fid)templine{i}=fgetl(fid);i=i+1;end finout=fopen('b.txt','w');printf(findout,'%s\\r\\n',templine{i});fclose(fid)fclose(fidin)

Matlab如何读取文本文件
1、首先,这里举例自己先制作一个txtde 文本文件,如下面页面的内容。2、将文本文件放入matlab的工作路径,方便读取操作。例如,如果我的文本文件在桌面上,我可以将matlab的工作路径更改为桌面。具体方法是单击matlab当前工作路径后的省略号,弹出选项选择文件夹,然后选择相应的路径。3、接下来,我们使用impo...

如何在matlab中读取TXT数据文件
fscanf(file_t,'%d');关闭文件 fclose(file_t);使用textscan读取多列数据 file_t = fopen('mytxt.txt','r');将原来的两列数据以数组原包(cell)的形式读取,cell共有两个元素 A = textscan(file_t,'%d d');C和上面A一样,D返回位置信息 [C,D]= textscan(file_t,'%d d');fclose(...

matlab如何读入cell数组
在读取文件的时候,cell数组(各种翻译都有,元胞数组,单元数组...直接无视)是Matlab的宠儿,基本都会出现,长期使用发现频率比struct高了不少~无论是Import Data还是使用textscan之类来获取数据.从长期使用高级语言的角度来说,特别是习惯了面向对象之后i,更习惯使用struct数组,概念也很相似,奈何现实是...我...

matlab怎么读入一个txt文件
= fopen('mytxt.txt','r');%将原来的两列数据以数组原包(cell)的形式读取,cell共有两个元素A = textscan(file_t,'%d d');%C和上面A一样,D返回位置信息[C,D]= textscan(file_t,'%d d');fclose(file_t);A{1} 原包数据的第一个元素对应第一列A{2}CD textread函数读取,现在不...

用了matlab程序,处理了矩阵单元全部写入一个cell内,怎么拆开?
matlab读入文本文件处理矩阵单元,使用p=textread('juzhen.txt','%s','delimiter','\\n','whitespace','');却发现结果在一个cell里需要拆开,方法如下:首先,textread函数已不为新版matlab所推荐使用,建议使用text...

matlab怎么加载txt文件,txt文件是数字矩阵,但最后一列是字母
最简单的办法:load('目录\\文件名.txt'),出来是cell类型,再根据需要转换一下就行了。或者用fopen 查一下帮助

MATLAB读取txt文件和绘图
第一,准备数据。新建文本文档,命名为test20171010.txt,并在文本文档中输入下图数据,然后保存,作为MATLAB读取txt文件的数据。第二,启动MATLAB,新建脚本(Ctrl+N),输入如下代码: close all; clear all; clc fileID=fopen('test20171010.txt'); C=textscan(fileID,'%s %s %f %s %d %u %f ...

matlab读取mat文件和txt文件
READALL_TXT 读取所有文件 DATA = READALL_TXT(PATH)读取路径PATH下的所有txt文件中的数据赋给data txt文件中含有一个数据项 输出cell格式以免各txt中数据长度不同 A = dir(fullfile(path,'*.txt'));读取后A的格式为 name -- filename date -- modification date bytes -- number of byte...

Matlab中读取txt文件的几种方法
方法一: file\/import data...\/next\/finish>> whosName Size Bytes Classdata 5x4 160 double arraytextdata 4x1 300 cell arrayGrand total is 54 elements using 460 bytes>> datadata = 1 11 111 11112 22 222 22223 33 333 33334 44 444 4444[a1,a2,a3,a4]=textread('test1.txt','...

相似回答