Chinaunix首页 | 论坛 | 博客
  • 博客访问: 845819
  • 博文数量: 221
  • 博客积分: 10033
  • 博客等级: 上将
  • 技术积分: 2325
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-06 22:00
文章分类

全部博文(221)

文章存档

2010年(8)

2009年(1)

2008年(69)

2007年(63)

2006年(80)

我的朋友

分类:

2007-12-30 13:26:58

假定名为 test.txt 的文件中以下为文件内容
"
你好,我的数据
欢迎来到
动力学与控制技术论坛

1 11 111 1111
2 22 222 2222
3 33 333 3333
4 44 444 4444
5 55 555 5555
"
这样的文件怎么读入数据呢?
方法有多种,现举两个比较简单实用的。

方法一:

在文件菜单中选择 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 =

   '你好'
   '欢迎来到'
   '动力学与控制技术论坛'
   ''

方法二:

[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'
因以字符串的形式读入,所以有''。

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

你好
1 11 111 1111
欢迎来到
2 22 222 2222
动力学与仿真控制论坛
3 33 333 3333

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
阅读(1527) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~