matlab的cell读写

cell存储的内容与数据类型无关,对于大量的不规则数据(不仅仅指的"数")的操作很方便。
1、由txt读入
经常遇到txt内保存的数据类型不统一,格式各异,这时候按cell读入数据就比较方便。
  1. fid = fopen(filename, 'r');  
  2. p = textscan(fid, '%s');  
其中filename是txt文件的名称,该操作将txt内的数据按字符串方式读入变量p内。
假设txt内存放内容如下:
  1. name  age  native  
  2. Jim   23   U.S.  
  3. Li    25   P.R.C  
  4. Lucy  21   U.K.  
则调用上述程序得到的p的
  1. p =  
  2.   cell  
  3.     {12×1 cell}  
既p是只有一个元素的cell,但是这个cell是一个12x1的列向量。
2、数据格式整理
通过“变量名+{index}”的方式可以访问第index个cell的内容,如下所示。
  1. >> p{1}  
  2.   
  3. ans =  
  4.   
  5.   12×1 cell array  
  6.   
  7.     'name'  
  8.     'age'  
  9.     'native'  
  10.     'Jim'  
  11.     '23'  
  12.     'U.S.'  
  13.     'Li'  
  14.     '25'  
  15.     'P.R.C'  
  16.     'Lucy'  
  17.     '21'  
  18.     'U.K.'  
利用reshape函数整理数据
  1. % 根据元数据格式,整理为4行3列的矩阵  
  2. mat_p = reshape(p{1}, 3, 4)';  
整理后的数据格式如图所示:
  1. mat_p =  
  2.   4×3 cell array  
  3.     'name'    'age'    'native'  
  4.     'Jim'     '23'     'U.S.'    
  5.     'Li'      '25'     'P.R.C'   
  6.     'Lucy'    '21'     'U.K.'    
由于reshape是优先对列进行排序,所以如果想要排列一个row行col列的数据,就要先排列为一个col行row列的矩阵后再进行转置。
3、数据的输出
  1. txtname = "D:\example_new.txt";  
  2. pfile = fopen(txtname, 'w');  
  3. for i = 1:4  
  4.     for j = 1:3  
  5.         fprintf(pfile, '%-5s', mat_p{i, j});  
  6.     end  
  7.     fprintf(pfile, '\r\n');  
  8. end  
  9. fclose(pfile);  
按照上面的程序对数据进行输出,得到的救过如下图所示:
  1. name age  native  
  2. Jim  23   U.S.   
  3. Li   25   P.R.C  
  4. Lucy 21   U.K.   
  • 4
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值