加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Matlab-含有不同数据类型的csv文件的读取和输出

(2018-03-23 15:15:29)
分类: Matlab

今天就来谈谈csv文件的读取和输出,此篇博文更偏重于自己学习过程的一个记录。平时习惯将数据输出为xlsx文件,但也有不少时候需要输出为csv,之前读取csv文件还是先使用bat程序将文件后缀改为txt,然后再进行读取。如果数据只是简单地全部都是数字,那么csvwrite和 csvread即可满足,但当数据中含有字母时,这两个函数却不能满足。

不过不同类型数据的csv文件的读取可以使用xlsread和importdata实现,目前实现含有不同类型的数据输出为csv格式或读取含有不同类型数据的csv文件的读取,我所了解的有两种方法:fprintf和table,下面分别讲解:

要输出为csv格式的数据以元胞数组为例:

title = {'Description','CO','NH3','NOx','BC','PM25'}

region ={'A1';'A2';'A3';'A4';'A5';'A6'}

con = {3.0500,6.3400,2.6300,9.1600,4.6600;5.0300,1.2100,1.2600,1.4000,9.3200;8.9500,2.7600,1.4900,5.8200,6.4300;4.4600,6.1200,5.7300,6.8100,0.3440;5.3700,5.1900,2.7300,8.5800,7.2200;3.4000,0.0689,1.2300,5.0700,9.5100}

data =[title;region,con]

http://s3/bmiddle/005yHIFSzy7j7p4EuWKd2&690

 

一、frintf输出

使用frintf输出为csv格式和xlsx,txt道理一样:

fid=fopen('test.csv','w');
          for i = 1:size(data,1)
             for j = 1:size(data,2)
                 if j==size(data,2)
                fprintf(fid,'%s\n',data{i,j});
           else
               fprintf(fid,'%s,',data{i,j}); %注意s后的','
          end
       end
    end
   fclose(fid);

 

二、table

1. 输出

原理是将要输出的数据转换成table类型数据,然后输出:

将data转换成table:

T=table(region,con(:,1),con(:,2),con(:,3),con(:,4),con(:,5),'VariableNames',title)

writetable(T,'test.csv')

**我学到这里的时间有个小想法,用table会有表头出现,甚至当你不自己设置表头时,输出的csv问你件也会自己加上var1,var2….这样的表头,所以当不需要表头时可以想办法将下图红框中的数据当做表头来达到自己的目的。

http://s11/bmiddle/005yHIFSzy7j7p7JmS69a&690

 

2. 读取

data = readtable('teat.csv');

data1 = table2cell(data);    %将table转换成cell

col1 = data{:,1};   %返回数据的第一列,注意使用花括号

使用table读取时会自动把第一行的数据当做表头,所以数据无表头时使用importdata或xlsread更方便些。

//对于含有大量空值而又含有表头的txt文件,load或importdata函数并不能很好地读取时,也可使用readtable。

//参考文献:http://www.ilovematlab.cn/article-52-1.html  关于table的用法,更详细的的介绍可以看这里。

//本人接触matlab 大概才有半年的时间,并没有很系统地学习过,平时都是用到什么不会了查资料,所以对很多函数和数据类型并不精通,有不当之处望大家包涵和指正。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有