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)

在Windows中,“D:\”表示D盘,“D:”表示目录

还可以查找特定后缀的文件:

如: dir(['fk\','*.jpg']) 表示查找 fk文件夹下后缀为 ' .jpg' 的文件

若 fk 目录下存在后缀为'.jpg' 的文件,则返回文件名:

1260500466587.jpg 1260500472025.jpg 8673601d.jpg

否则返回: fk.\*.jpg not found.

其中dirname是要查找的路径的名字,路径在matlab的搜索路径内时,没有必要输入全名,只输入最后或最后两级就够了。

fopen ('filename', 'mode')

mode格式有:

‘r’:只读方式打开文件(默认的方式),该文件必须已存在。

‘r+’:读写方式打开文件,打开后先读后写。该文件必须已存在。

‘w’:打开后写入数据。该文件已存在则更新;不存在则创建。

‘w+’:读写方式打开文件。先读后写。该文件已存在则更新;不存在则创建。

‘a’:在打开的文件末端添加数据。文件不存在则创建。

‘a+’:打开文件后,先读入数据再添加数据。文件不存在则创建。 如果rt表示该文件以文本方式打开,如果添加的是“b”,则以二进制格式打开,这也是fopen函数默认的打开方式。

Fopen函数两个返回值:

fclose(f)

f为打开文件的标志,若fclose函数返回值为0,则表示成功关闭f标志的文件;若返回值为–1,则表示无法成功关闭该文件。

若要一次关闭打开的所有文件,可以使用下面的命令:fclose all

MATLAB自带的MAT文件为二进制文件,但为了便于和外部程序进行交换以及方便查看文件中的数据,也常常采用文本数据格式(数据采用ASCII码格式,可以表示字母和数字字符)与外界进行数据交换。

函数 | csvread| dlmread| fscanf| load| textread|

-|-|-

数 据 类 型| 数值数据| 数值数据| 字母和数值| 数值数据| 字母和数值|

分 隔 符| 仅cooma| 任何字符| 任何字符| 仅space| 任何字符|

返 回 值| 1| 1| 1| 1| 多返回值

如: A=load('my_data.txt')

如果想把4列数据全部读取出放在4个变量中,则使用如下命令:

>>[name gra grades answer]=textread('my_exam.dat','%s %s %f %s')

函数| csvwrite| diary| dlmwrite| fprintf| save

-|-|-

数 据 类 型| 数值数据| 数值数据或单元阵列| 数值数据| 字母和数值数据| 数值数据

分 隔 符| 逗号| 空格| 任何字符| 任何字符| 制表符或空格符

存写有分隔符的ASCII码数据文件 若要将当前的MATLAB工作空间的一个或多个变量写到一个有分隔符的ASCII码文件中,可以使用save命令或dlmwrite函数。在默认情况下,save命令是以 MAT 格式存写数据的。

作用 | 标志 | 例子

-|-

左对齐 | ' - ' | %-5.2f

打印符号字符(+或 - ) | '+' | %+5.2f

插入空格| ' ' | % 5.2f

垫零 | '0' | %05.2f

对%o, %x, %X, 打印 0,0x,0X的前缀。

对%f, %e, %E, 打印小数点,即使是0。

对%g, %G,不删除或尾部的零或小数点。 | '#' | %#5.0f

例: 创建一个2×2的魔方矩阵,然后打开一文件,写入数据。

fseekfrewind

设定指针位置重设指针到文件起始位置

ftellfeof

获得指针位置测试指针是否在文件结束位置


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存