Matlab笔记——数据的读写、导入及导出011_第1页
Matlab笔记——数据的读写、导入及导出011_第2页
Matlab笔记——数据的读写、导入及导出011_第3页
Matlab笔记——数据的读写、导入及导出011_第4页
Matlab笔记——数据的读写、导入及导出011_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

1、011. 数据的读写、导入及导出在编写一个程序时,经常需要从外部导入数据,或者将程序运行的结果保存为文件。一、*.txt或*.dat数据的导入与导出 1. load函数数值数据(格式一致)导入注:load函数可以导入.mat文件,也可以导入变量Load(1.mat,y)例1examp01.txt文件如下:1.6218e-005 6.0198e-005 4.5054e-005 8.2582e-005 1.0665e-005 8.6869e-0057.9428e-005 2.6297e-005 8.3821e-006 5.3834e-005 9.6190e-005 8.4436e-0063.112

2、2e-005 6.5408e-005 2.2898e-005 9.9613e-005 4.6342e-007 3.9978e-0055.2853e-005 6.8921e-005 9.1334e-005 7.8176e-006 7.7491e-005 2.5987e-0051.6565e-005 7.4815e-005 1.5238e-005 4.4268e-005 8.1730e-005 8.0007e-005代码:x1 = load('examp01.txt') ;% 用load函数载入文件examp01.txt中的数据x1 = load('examp01.txt&

3、#39;, '-ascii'); % 用-ascii选项强制以文本文件方式读取数据load('examp01.txt'); %载入数据给变量examp01运行结果:x1 = 1.0e-004 * 0.1622 0.6020 0.4505 0.8258 0.1066 0.8687 0.7943 0.2630 0.0838 0.5383 0.9619 0.0844 0.3112 0.6541 0.2290 0.9961 0.0046 0.3998 0.5285 0.6892 0.9133 0.0782 0.7749 0.25990.1657 0.7481 0.152

4、4 0.4427 0.8173 0.8001例2examp02.txt文件如下:9.5550 2.7027, 8.6014; 5.6154* 3.45320.9223 0.9284, 1.4644; 3.6703* 2.21345.5557 7.2288, 4.3811; 6.4703* 4.78564.7271 9.9686, 6.1993; 9.6416* 0.6866代码:x1 = load('examp02.txt') % 用load函数载入文件examp02.txt中的数据x1 = load('examp02.txt', '-ascii'

5、;); % 用-ascii选项强制以文本文件方式读取数据运行结果:x = 9.5550 2.7027 8.6014 5.6154 3.4532 0.9223 0.9284 1.4644 3.6703 2.2134 5.5557 7.2288 4.3811 6.4703 4.7856 4.7271 9.9686 6.1993 9.6416 0.68662. dlmread函数有统一分隔符的数值数据导入语法:M = dlmread(文件名,分隔符,读取范围)例3(带标题行)examp03.txt文件如下:这是2行头文件,你可以选择跳过,读取后面的数据。1.096975, 0.635914, 4.0

6、45800, 4.483729, 3.658162, 7.6350466.278964, 7.719804, 9.328536, 9.727409, 1.920283, 1.3887426.962663, 0.938200, 5.254044, 5.303442, 8.611398, 4.848533代码:x = dlmread('examp03.txt', ',', 2,0); %调用dlmread函数读取文件examp02.txt中的数据,用逗号(',')作分隔符,设定读取的初始位置:2行0列之后的数据运行结果:x = 1.0970 0.63

7、59 4.0458 4.4837 3.6582 7.6350 6.2790 7.7198 9.3285 9.7274 1.9203 1.38876.9627 0.9382 5.2540 5.3034 8.6114 4.8485例4examp04.txt文件如下:1.455390+1.360686i, 8.692922+5.797046i, 5.498602+1.449548i, 8.530311+6.220551i3.509524+5.132495i, 4.018080+0.759667i, 2.399162+1.233189i, 1.839078+2.399525i4.172671+0.49

8、6544i, 9.027161+9.447872i, 4.908641+4.892526i, 3.377194+9.000538i代码:x = dlmread('examp04.txt') % 调用dlmread函数读取的复数矩阵运行结果:x =1.4554 + 1.3607i 8.6929 + 5.7970i 5.4986 + 1.4495i 8.5303 + 6.2206i 3.5095 + 5.1325i 4.0181 + 0.7597i 2.3992 + 1.2332i 1.8391 + 2.3995i 4.1727 + 0.4965i 9.0272 + 9.4479i

9、 4.9086 + 4.8925i 3.3772 + 9.0005i例5. examp05.txt文件如下:1.758744 7.217580 4.734860 1.5272123.411246 6.073892 1.9174537.384268 2.4284969.174243代码:x = dlmread('examp05.txt') x1 = load('examp05.txt') % 由于列数不一致,会报错运行结果:x = = 1.7587 7.2176 4.7349 1.5272 3.4112 6.0739 1.9175 0 7.3843 2.4285

10、0 0 9.1742 0 0 03. dmlwrite函数将矩阵数据写入指定分隔符的ASCII格式文件语法:dlmwrite(文件名, 数据, 分隔符, 起始行,起始列)dlmwrite(文件名, 数据, '-append')'-append'表示将矩阵数据写到文本末尾,若不指定将覆盖原文本数据。例. (略)4. importdata函数导入带表头的txt或xls数据【将数据存入结构体】语法:A = importdata(文件名, 分隔符, n); N表示n行表头注:也可以读入图片【x=importdata('tupian.jpg'); imag

11、e(x);】例6. examp06.txt文件如下:Day1 Day2 Day3 Day4 Day5 Day6 Day795.01 76.21 61.54 40.57 5.79 20.28 1.5323.11 45.65 79.19 93.55 35.29 19.87 74.6860.68 1.85 92.18 91.69 81.32 60.38 44.5148.60 82.14 73.82 41.03 0.99 27.22 93.1889.13 44.47 17.63 89.36 13.89 19.88 46.60代码:x = importdata('examp14.txt'

12、,' ',1)x.datax.textdata运行结果:x =data: 5x7 doubletextdata: 'Day1' 'Day2' 'Day3' 'Day4' 'Day5' 'Day6' 'Day7'colheaders: 'Day1' 'Day2' 'Day3' 'Day4' 'Day5' 'Day6' 'Day7'ans =95.0100 76

13、.2100 61.5400 40.5700 5.7900 20.2800 1.5300 23.1100 45.6500 79.1900 93.5500 35.2900 19.8700 74.6800 60.6800 1.8500 92.1800 91.6900 81.3200 60.3800 44.5100 48.6000 82.1400 73.8200 41.0300 0.9900 27.2200 93.1800 89.1300 44.4700 17.6300 89.3600 13.8900 19.8800 46.6000ans = 'Day1' 'Day2'

14、 'Day3' 'Day4' 'Day5' 'Day6' 'Day7'例7. examp07.xls(Sheet1)文件如下:代码:x = importdata('examp07.xls')x.data.Sheet1x.textdata.Sheet1运行结果:x =data: 1x1 structtextdata: 1x1 structans =1 60101 6010101 NaN 0 63 632 60101 6010102 NaN 0 73 733 60101 6010103 NaN 0 0

15、0 4 60101 6010104 NaN 0 82 825 60101 6010105 NaN 0 80 80ans = '序号' '班名' '学号' '姓名' '平时成绩' '期末成绩' '总成绩' '备注' '' '' '' '陈亮' '' '' '' '' '' '' '' '李

16、旭' '' '' '' '' '' '' '' '刘鹏飞' '' '' '' '缺考' '' '' '' '任时迁' '' '' '' '' '' '' '' '苏宏宇' '' '&#

17、39; '' '' 5. textread与textscan函数它们用法类似,导入混合格式文本注意:使用textscan之前,必须先用fopen打开要读入的文件。语法:C = textscan(fid, 'format', N, 'param', value);fid文件句柄;format读取格式;N用该格式读取N次数据;'param', value(可选)指定分隔符和值对例8examp08.txt文件如下:(将数据存入元胞数组)Sally Level1 12.34 45 1.23e10 inf Nan Yes 5

18、.1+3iJoe Level2 23.54 60 9e19 -inf 0.001 No 2.2-.5iBill Level3 34.90 12 2e5 10 100 No 3.1+.1i代码:fid = fopen('examp08.txt','r');C = textscan(fid, '%s%s%f32%d8%u%f%f%s%f');fclose(fid);C1C9运行结果:C1 = 'Sally' 'Joe''BillC9 = 5.1000 + 3.0000i 2.2000 - 0.5000i 3.1

19、000 + 0.1000i例9examp09.dat文件如下(读入固定格式的文件的第一行,忽略其中的浮点值):Sally Level1 12.34 45 Yes book.iLoveM代码:fid = fopen('examp09.dat','r');names, types, y, answer = textread('examp09.dat', .'%9c %6s %*f %2d %3s', 1)fclose(fid);运行结果:names =Sally Levtypes = 'el1'y =45answer

20、= 'Yes'二、*.xls数据的导入与导出xlsread函数1. 从*.xls导入数据语法:num, txt, raw = xlsread('文件名.xls','工作表', '数据范围')例10 examp10.xls(Sheet1)文件如下(导入Sheet1的A1至H4数据):代码:num,txt,raw = xlsread('examp02_14.xls','Sheet1', 'A1:H4')%数据返回num;文本返回txt;不处理直接作为元胞返回raw运行结果:num = 1

21、 60101 6010101 NaN 0 63 63 2 60101 6010102 NaN 0 73 73 3 60101 6010103 NaN 0 0 0txt = '序号' '班名' '学号' '姓名' '平时成绩' '期末成绩' '总成绩' '备注' '' '' '' '陈亮' '' '' '' '' '' '

22、;' '' '李旭' '' '' '' '' '' '' '' '刘鹏飞' '' '' '' '缺考'raw = '序号' '班名' '学号' '姓名' '平时成绩' '期末成绩' '总成绩''备注' 1 60101 6010101 

23、9;陈亮' 0 63 63 NaN 2 60101 6010102 '李旭' 0 73 73 NaN 3 60101 6010103 '刘鹏飞' 0 0 0'缺考'2.将数据导出到*.xls文件语法:status = xlswrite(filename.xls, 数据, 工作表, 指定区域)成功返回1,失败返回0.例11 将矩阵或元胞数组的数据写成xls文件代码:xlswrite('testdata.xls', 12.7 5.02 -98 63.9 0 -.2 56)d = 'Time', 'Tem

24、p' 12 98; 13 99; 14 97;s = xlswrite('tempdata.xls', d, 'Temperatures', 'E1')运行结果:textdata.xlstempdata.xls(Temperatures)最后看一个综合的实例。例12 读取数据、处理日期数据,根据日期绘制开盘价变化趋势图形。ExpData.xlsx文件如下:代码:num,txt = xlsread('ExpData.xlsx'); % 读取excel表格中的数据,数值存入num,文本存入txtdate=txt(2:end,1

25、) % 取出日期数据单独处理t=datenum(date) % 将日期转化为数值(方便绘图使用)date1=datestr(t) % 将数值转化为日期h=figure; % 生成空的图形窗口set(h,'color','w'); % 将图的背景颜色设为白色plot(t,num(:,1); % 以日期为横坐标,开盘价为纵坐标,绘制图形% plot(t,num(:,1),'*'); % 绘制散点图datetick('x',23); % 将x轴标注变成日期格式:mm/dd/yyyyxlabel('日期'); % 标注x轴

26、ylabel('开盘价'); % 标注y轴title=('上海证交所'); % 标注图片名称(很奇怪!居然标题显示不出来)运行结果:txt ='时间' '开盘价' '最高价' '最低价' '收盘价' '成交量' '成交金' '2014/11/25' '' '' '' '' '' '' '2014/11/26' '

27、9; '' '' '' '' '' '2014/11/27' '' '' '' '' '' '' '2014/11/28' '' '' '' '' '' '' '2014/12/1' '' '' '' '' '

28、;' '' '2014/12/2' '' '' '' '' '' '' '2014/12/3' '' '' '' '' '' '' '2014/12/4' '' '' '' '' '' '' '2014/12/5' '

29、;' '' '' '' '' '' '2014/12/8' '' '' '' '' '' '' '2014/12/9' '' '' '' '' '' '' '2014/12/10' '' '' '' '' &

30、#39;' '' '2014/12/11' '' '' '' '' '' '' '2014/12/12' '' '' '' '' '' '' '2014/12/15' '' '' '' '' '' ''date = '2014/11

31、/25' '2014/11/26' '2014/11/27' '2014/11/28' '2014/12/1' '2014/12/2' '2014/12/3' '2014/12/4' '2014/12/5' '2014/12/8' '2014/12/9' '2014/12/10' '2014/12/11' '2014/12/12''2014/12/15't = 73

32、5928 735929 735930 735931 735934 735935 735936 735937 735938 735941 735942 735943 735944 735945 735948date1 =25-Nov-201426-Nov-201427-Nov-201428-Nov-201401-Dec-201402-Dec-201403-Dec-201404-Dec-201405-Dec-201408-Dec-201409-Dec-201410-Dec-201411-Dec-201412-Dec-201415-Dec-2014附录:Matlab中的文件读写1. 文本文件的打开:

33、语法:fid=fopen(文件名, 打开方式)fid为文件句柄【术语句柄:用来操作所打开文件的标识】,若fid返回值0,表示打开文件成功;若返回值是-1,表示打开文件失败(一般是路径、文件名、后缀名出错引起的)。注意:用完文件要关闭:fclose(fid);打开方式有如下几种:'r'只读,文件必须存在(缺省的打开方式)'w' 写文件,若文件已存在则原内容将被覆盖;若文件不存在则新建一个'a' 在文件末尾添加,文件若不存在则新建一个'r+' 可读可写,文件必须存在'w+' 可读可写,若文件已存在则原内容将被覆盖;若文

温馨提示

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

评论

0/150

提交评论