matlab基本操作读取csv文件Word格式文档下载.docx
- 文档编号:18364931
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:8
- 大小:17.24KB
matlab基本操作读取csv文件Word格式文档下载.docx
《matlab基本操作读取csv文件Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《matlab基本操作读取csv文件Word格式文档下载.docx(8页珍藏版)》请在冰豆网上搜索。
10
12
3
9
12
15
18
5
20
25
30
7
14
21
28
35
42
11
22
33
44
55
66
例1.2
读取第2行以下,第0列以右区域的数据
m=csvread('
csvlist.dat'
2,0)
m=
例1.3
读取第2行以下,第0列以右,第3行以上,第3列以左区域的数据
2,0,[2,0,3,3])
20
28
2、使用textscan函数
在使用textscan函数前必须用fopen函数打开CSV文件。
textscan函数读取的结果会存在cell数组中。
调用格式
C=textscan(fid,'
format'
N)
param,value,...)
N,param,value,...)
C=textscan(str,...)
[C,position]=textscan(...)
关于textscan函数的具体用法见helptextscan。
例2.1
读取字符串
str='
0.418.243.576.249.27'
;
C=textscan(str,'
%3.1f%*1d'
);
textscanreturnsa1-by-1cellarrayC:
C{1}=[0.4;
8.2;
3.5;
6.2;
9.2]
例2.2
读取不同类型的数据
scan1.dat文件内容如下
Sally
Level1
12.34
45
1.23e10
inf
NaN
Yes
Joe
Level2
23.54
60
9e19
-inf
0.001No
Bill
Level3
34.90
2e5
100
No
程序如下
fid=fopen('
scan1.dat'
%s%s�2�%u%f%f%s'
fclose(fid);
返回值C是一个1×
8的元胞数组,其值如下
C{1}={'
Sally'
'
Joe'
Bill'
}
classcell
C{2}={'
Level1'
Level2'
Level3'
C{3}=[12.34;
23.54;
34.9]
classsingle
C{4}=[45;
60;
12]
classint8
C{5}=[4294967295;
4294967295;
200000]
classuint32
C{6}=[Inf;
-Inf;
10]
classdouble
C{7}=[NaN;
0.001;
100]
C{8}={'
Yes'
No'
C{5}的前两项超出了uint32数值范围,所以只给uint32的数值上限
例2.3
去除一列字符串
%去除scan1.dat中地2列的字符串
%sLevel%u8�2�%u%f%f%s'
返回一个1×
8的元胞数组,其中
C{2}=[1;
2;
3]
classuint8
例2.4
只读第一列
names=textscan(fid,'
%s%*[^\n]'
1的元胞数组
names{1}={'
}
例子2.5指定的分隔符和空值的换算
data.csv文件内容如下
1,
2,
3,
4,
6
7,
8,
9,
11,12
data.csv'
%f%f%f%f%u32%f'
'
delimiter'
'
...
'
EmptyValue'
-Inf);
6的元胞数组
C{1}=[1;
7]
C{2}=[2;
8]
C{3}=[3;
9]
C{4}=[4;
-Inf]
classdouble
(emptyconvertedto-Inf)
C{5}=[0;
11]
classuint32
(emptyconvertedto0)
C{6}=[6;
例2.6
CSV文件中含有空值和注释
data2.csv内容如下
abc,2,NA,3,4
//CommentHere
def,na,5,6,7
分离出注释语句
data2.csv'
%s%n%n%n%n'
treatAsEmpty'
{'
NA'
na'
},...
commentStyle'
//'
返回1×
5的元胞数组
abc'
def'
NaN]
C{3}=[NaN;
5]
C{4}=[3;
6]
C{5}=[4;
7]
例2.7
处理重复分隔符
data3.csv
内容如下
1,2,3,,4
5,6,7,,8
将multipledelimsasone参数的值赋为1,剔除重复的分隔符
data3.csv'
%f%f%f%f'
MultipleDelimsAsOne'
1);
4的元胞数组
8]
例2.8
使用collectoutput开关
grades.txt内容如下
Student_ID
|Test1
|Test2
|Test3
1
91.5
89.2
A
88.0
67.8
B
76.3
78.1
C
96.4
81.2
D
collectoutput开关的默认值为0(false)将CSV中的每一列返回到Cell的一列中。
如果将其值设为1(true),则会把相同数据类型的列返回到Cell的一列中。
%默认不开启collectoutput
grades.txt'
%readcolumnheaders
C_text=textscan(fid,'
%s'
4,'
|'
%readnumericdata
C_data0=textscan(fid,'
%d%f%f%s'
%开启collectoutput
frewind(fid);
C_data1=textscan(fid,'
CollectOutput'
1)
使用collectoutput后,ID成为cell中的一列,Test1和test2合起来成为cell中的一列,test3成为cell中的一列
C_data0=
[4x1int32]
[4x1double]
{4x1cell}
C_data1=
[4x2double]
frewind的作用是让后面的textscan函数使用前面的fid,一个fid只能让一个textscan读
例2.9
使用缺省的控制字符
如果要读的字符串中包含一些控制字符:
\b
Backspace
\n
Newline
\r
Carriagereturn
\t
Tab
\\
Backslash(\)
如果你的数据使用不同的控制字符,在调用textscan时能使用sprintf函数显式转换这些控制字符。
lyric=sprintf('
Blackbird\fsinging\fin\fthe\fdead\fof\fnight'
C=textscan(lyric,'
sprintf('
\f'
));
C{1}=
{'
Blackbird'
singing'
in'
the'
dead'
of'
night'
例2.10
读取部分字符串
lyric='
Blackbirdsinginginthedeadofnight'
%读取第一个单词:
[firstword,pos]=textscan(lyric,'
�'
%读剩下的部分
lastpart=textscan(lyric(pos+1:
end),'
3、当成数据库使用
具体方法可以去XX“matlab
数据库编程”
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- matlab 基本 操作 读取 csv 文件