matlab如何读取其中的一部分文件?

matlab如何读取其中的一部分文件?,第1张

一、纯数据文件(没有字母和中文,纯数字)\x0d\x0a对于这种txt文档,从matalb中读取就简单多了\x0d\x0a例如test.txt文件,内容为\x0d\x0a17.901 -1.1111 33.045 \x0d\x0a17.891 -1.1286 33.045 \x0d\x0a17.884 -1.1345 33.045\x0d\x0a可以在command window中输入load test.txt ,然后就会产生一个test的数据文件,内容跟test.txt中的数据一样;另一种方法是在file/import data....../next/finish 也可产生一个叫test的数据文件。\x0d\x0a二、中英文和数据如test1.txt\x0d\x0a你好 \x0d\x0a欢迎来到 \x0d\x0a论坛 \x0d\x0aedu.cn \x0d\x0a1 11 111 1111 \x0d\x0a2 22 222 2222 \x0d\x0a3 33 333 3333 \x0d\x0a4 44 444 4444 \x0d\x0a5 55 555 5555\x0d\x0a\x0d\x0a这样的文件怎么读入数据呢? \x0d\x0a方法有多种,现举两个比较简单实用的。\x0d\x0a方法一: \x0d\x0afile/import data....../next/finish \x0d\x0a>>whos \x0d\x0aName Size Bytes Class\x0d\x0adata 5x4 160 double array \x0d\x0atextdata 4x1 300 cell array\x0d\x0aGrand total is 54 elements using 460 bytes\x0d\x0a>>data\x0d\x0adata =\x0d\x0a 1 11 1111111 \x0d\x0a 2 22 2222222 \x0d\x0a 3 33 3333333 \x0d\x0a 4 44 4444444 \x0d\x0a 5 55 5555555\x0d\x0a>>textdata\x0d\x0atextdata =\x0d\x0a'你好\x0d\x0a'欢迎来到\x0d\x0a'论坛\x0d\x0a'edu.cn'\x0d\x0a方法二: \x0d\x0a[a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4) \x0d\x0a说明:%s可以是其他形式,跟读入的数据类型有关,比如这里也可以用%n,%f等。 \x0d\x0a这里%s的个数和[a1,a2,a3,a4]对应。 \x0d\x0a>>[a1,a2,a3,a4]=textread('test1.txt','%s%s%s%s','headerlines',4)\x0d\x0aa1 =\x0d\x0a'1\x0d\x0a'2\x0d\x0a'3\x0d\x0a'4\x0d\x0a'5'\x0d\x0aa2 =\x0d\x0a'11\x0d\x0a'22\x0d\x0a'33\x0d\x0a'44\x0d\x0a'55'\x0d\x0aa3 =\x0d\x0a'111\x0d\x0a'222\x0d\x0a'333\x0d\x0a'444\x0d\x0a'555'\x0d\x0aa4 =\x0d\x0a'1111\x0d\x0a'2222\x0d\x0a'3333\x0d\x0a'4444\x0d\x0a'5555\x0d\x0a因以字符串的形式读入,所以有''。 \x0d\x0a————————————————————————————————\x0d\x0a三、中文 数据 英文 混乱如test.txt\x0d\x0a你好 \x0d\x0a1 11 111 1111 \x0d\x0a欢迎来到 \x0d\x0a2 22 222 2222 \x0d\x0a论坛 \x0d\x0a3 33 333 3333 \x0d\x0aedu.cn \x0d\x0a4 44 444 4444 \x0d\x0a5 55 555 5555\x0d\x0a说明:这种内容格式的文件用上面的方法是不行的。\x0d\x0a以下是由chinamaker编写的一种方法:\x0d\x0afidin=fopen('test.txt') % 打开test2.txt文件 \x0d\x0afidout=fopen('mkmatlab.txt','w') % 创建MKMATLAB.txt文件 \x0d\x0awhile ~feof(fidin) % 判断是否为文件末尾 \x0d\x0atline=fgetl(fidin)% 从文件读行 \x0d\x0aif double(tline(1))>=48&&double(tline(1))>MK\x0d\x0aMK =\x0d\x0a 1 11 1111111 \x0d\x0a 2 22 2222222 \x0d\x0a 3 33 3333333 \x0d\x0a 4 44 4444444 \x0d\x0a 5 55 5555555\x0d\x0a---------------------------------------------------------------\x0d\x0a我的txt数据里既有数字又有字符串,形式为:\x0d\x0a0.129515 DDAA 01 2.24609 94.50000 98\x0d\x0a0.130434 DDAA 01 2.24609 96.30000 9A\x0d\x0a0.131441 DDAA 01 2.24609 97.20000 9B\x0d\x0a0.132448 DDAA 01 2.24609 99.00000 9D\x0d\x0a0.133507 DDAA 01 2.24609 100.80000 9F\x0d\x0a0.134515 DDAA 01 2.24609 101.70000 A0\x0d\x0a............\x0d\x0a我只想要第一列,第四列,第五列。\x0d\x0a也就是0.1295152.2460994.50000 这3列数,\x0d\x0a怎样导入matlab啊?\x0d\x0a\x0d\x0a假设数据在data.txt里,且位于当面matlab路径里,用下面这句就可以了\x0d\x0a[col1,col2,col3]=textread('data.txt','%f %*s %*d %f %f %*s',-1)

方法一:

A=importdata(file,space,line)

其中,file是所读取的文件名,space是特定的分隔符,line是一个数字,指文本中字符串文字的行数,如上文的数据中line=4。

此代码的含义是,line行是title,line+1行到end是数据,按特定分隔符space读取数据。此方法可以读取文本在上和数据在下的文件。

A是一个sturct,其中A.data就是所需的数据了。

exapmle:

A=importdata('test.txt','

',4)%运行即可取得数据A.data

此方法也可以按以下 *** 作获取:

在文件菜单中选择

file/import

data,按照提示进行 *** 作至结束。

command

窗口中输入

>>

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

=

'你好'

'欢迎来到'

'百思论坛'

'www.baisi.net'

方法二:

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

说明:%s可以是其他形式,跟读入的数据类型有关,比如这里也可以用%d,%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'

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

文件内容形式二(假定文件名为test2.txt):

你好

1

11

111

1111

欢迎来到

2

22

222

2222

百思论坛

3

33

333

3333

www.baisi.net

4

44

444

4444

5

55

555

5555

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

方法三:

以下是由chinamaker编写的一种方法,但是需要重新建一个文本。

fidin=fopen('test2.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

TXT文件是纯文本文件,matlab中读取文本文件包括高级函数和低级函数两类型。

高级函数包括:load从文本文件导入数据到MATLAB空间中、importdata从文本文件或特殊格式二进制文件、读取数据dlmread从文本文件中读取数据。低级函数包括:fopen打开文件、获取打开文件的信息、fclose关掉一个或多个打开的文件、fgets读取文件中的下一行。

MATLAB是MathWorks公司推出的用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境的商业数学软件。MATLAB具有数值分析、数值和符号计算、工程与科学绘图、数字图像处理、财务与金融工程等功能,为众多科学领域提供了全面的解决方案。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8133783.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存