matlab基本操作,读取csv文件.doc_第1页
matlab基本操作,读取csv文件.doc_第2页
matlab基本操作,读取csv文件.doc_第3页
matlab基本操作,读取csv文件.doc_第4页
matlab基本操作,读取csv文件.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、用csvread函数注意:csvread函数只试用与用逗号分隔的纯数字文件第一种:M = CSVREAD(FILENAME),直接读取csv文件的数据,并返回给M第二种:M = CSVREAD(FILENAME,R,C),读取csv文件中从第R-1行,第C-1列的数据开始的数据,这对带有头文件说明的csv文件(如示波器等采集的文件)的读取是很重要的。第三种:M = CSVREAD(FILENAME,R,C,RNG),其中RNG = R1 C1 R2 C2,读取左上角为索引为(R1,C1) ,右下角索引为(R2,C2)的矩阵中的数据。注意:matlab认为CSV第1行第1列的单元格坐标为(0,0)给定一个csvlist.csv文件,其内容如下02, 04, 06, 08, 10, 1203, 06, 09, 12, 15, 1805, 10, 15, 20, 25, 3007, 14, 21, 28, 35, 4211, 22, 33, 44, 55, 66例1.1读取整个文件csvread(csvlist.csv)ans =246810123691215185101520253071421283542112233445566例1.2读取第2行以下,第0列以右区域的数据m = csvread(csvlist.dat, 2, 0)m =5101520253071421283542112233445566例1.3读取第2行以下,第0列以右,第3行以上,第3列以左区域的数据m = csvread(csvlist.dat, 2, 0, 2,0,3,3)m =510152071421282、使用textscan函数在使用textscan函数前必须用fopen函数打开CSV文件。textscan函数读取的结果会存在cell数组中。调用格式C = textscan(fid, format)C = textscan(fid, format, N)C = textscan(fid, format, param, value, .)C = textscan(fid, format, N, param, value, .)C = textscan(str, .)C, position = textscan(.)关于textscan函数的具体用法见help textscan。例2.1读取字符串str = 0.41 8.24 3.57 6.24 9.27;C = textscan(str, %3.1f %*1d);textscan returns a 1-by-1 cell array C:C1 = 0.4; 8.2; 3.5; 6.2; 9.2例2.2读取不同类型的数据scan1.dat文件内容如下SallyLevel112.34451.23e10infNaNYesJoeLevel223.54609e19-inf0.001 NoBillLevel334.90122e510100No程序如下fid = fopen(scan1.dat);C = textscan(fid, %s %s 2 %u %f %f %s);fclose(fid);返回值C是一个18的元胞数组,其值如下C1 = Sally; Joe; Billclass cellC2 = Level1; Level2; Level3class cellC3 = 12.34; 23.54; 34.9class singleC4 = 45; 60; 12class int8C5 = 4294967295; 4294967295; 200000class uint32C6 = Inf; -Inf; 10class doubleC7 = NaN; 0.001; 100class doubleC8 = Yes; No; Noclass cell注意:C5的前两项超出了uint32数值范围,所以只给uint32的数值上限例2.3去除一列字符串%去除scan1.dat中地2列的字符串fid = fopen(scan1.dat);C = textscan(fid, %s Level%u8 2 %u %f %f %s);fclose(fid);返回一个18的元胞数组,其中C2 = 1; 2; 3class uint8例2.4只读第一列fid = fopen(scan1.dat);names = textscan(fid, %s %*n);fclose(fid);返回一个11的元胞数组names1 = Sally; Joe; Bill例子2.5指定的分隔符和空值的换算data.csv文件内容如下1,2,3,4,67,8,9, 11, 12程序如下fid = fopen(data.csv);C = textscan(fid, %f %f %f %f %u32 %f, delimiter, , .EmptyValue, -Inf);fclose(fid);返回一个16的元胞数组C1 = 1; 7class doubleC2 = 2; 8class doubleC3 = 3; 9class doubleC4 = 4; -Infclass double(empty converted to -Inf)C5 = 0; 11class uint32(empty converted to 0)C6 = 6; 12class double例2.6CSV文件中含有空值和注释data2.csv内容如下abc, 2, NA, 3, 4/ Comment Heredef, na, 5, 6, 7分离出注释语句fid = fopen(data2.csv);C = textscan(fid, %s %n %n %n %n, delimiter, , .treatAsEmpty, NA, na, .commentStyle, /);fclose(fid);返回15的元胞数组C1 = abc; defC2 = 2; NaNC3 = NaN; 5C4 = 3; 6C5 = 4; 7例2.7处理重复分隔符data3.csv内容如下1,2,3,45,6,7,8将multipledelimsasone参数的值赋为1,剔除重复的分隔符fid = fopen(data3.csv);C = textscan(fid, %f %f %f %f, delimiter, , .MultipleDelimsAsOne, 1);fclose(fid);返回一个14的元胞数组C1 = 1; 5C2 = 2; 6C3 = 3; 7C4 = 4; 8例2.8使用collectoutput开关grades.txt内容如下Student_ID| Test1| Test2| Test3191.589.2A288.067.8B376.378.1C496.481.2Dcollectoutput开关的默认值为0(false)将CSV中的每一列返回到Cell的一列中。如果将其值设为1(true),则会把相同数据类型的列返回到Cell的一列中。%默认不开启collectoutputfid = fopen(grades.txt);% read column headersC_text = textscan(fid, %s, 4, delimiter, |);% read numeric dataC_data0 = textscan(fid, %d %f %f %s)%开启collectoutputfrewind(fid);C_text = textscan(fid, %s, 4, delimiter, |);C_data1 = textscan(fid, %d %f %f %s, .CollectOutput, 1)fclose(fid);使用collectoutput后,ID成为cell中的一列,Test1和test2合起来成为cell中的一列,test3成为cell中的一列C_data0 =4x1 int324x1 double4x1 double4x1 cellC_data1 =4x1 int324x2 double4x1 cellfrewind的作用是让后面的textscan函数使用前面的fid,一个fid只能让一个textscan读例2.9使用缺省的控制字符如果要读的字符串中包含一些控制字符:bBackspacenNewlinerCarriage returntTabBackslash ()如果你的数据使用不同的控制字符,在调用textscan时能使用sprintf函数显式转换这些控制字符。lyric = sprintf(Blackbirdfsingingfinfthefdeadfoffnight);C = textscan(lyric, %s, delimiter, sprintf(f);textscan returns a 1-by-1 cell array C:C1 =Blackbird; singing; in; the; d

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论