ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:115.20KB ,
资源ID:6227574      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6227574.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Matlab学习系列011 数据的读写导入及导出.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Matlab学习系列011 数据的读写导入及导出.docx

1、Matlab学习系列011 数据的读写导入及导出011. 数据的读写、导入及导出在编写一个程序时,经常需要从外部导入数据,或者将程序运行的结果保存为文件。一、*.txt或*.dat数据的导入与导出1. load函数数值数据(格式一致)导入注:load函数可以导入.mat文件,也可以导入变量Load(1.mat,y)例1 examp01.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.61

2、90e-005 8.4436e-0063.1122e-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-005 1.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(ex

3、amp01.txt, -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.1524 0.4427 0.8173

4、 0.8001例2 examp02.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); % 用-ascii选项强制以文本文件方式读取数据运行结果:x = 9.5550

5、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.045800, 4.483729, 3.658162, 7.6350466.278964

6、, 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.6359 4.0458 4.4837 3.6582 7.6350 6.2790 7.7198 9.3285 9.7274 1.9203 1.38876.

7、9627 0.9382 5.2540 5.3034 8.6114 4.8485例4 examp04.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.496544i, 9.027161+9.447872i, 4.908641+4.892526i, 3.377194+9.000538i代码:x = d

8、lmread(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 4.9086 + 4.8925i 3.3772 + 9.0005i例5. examp05.txt文件如下:1.758744 7.217580 4.734860 1

9、.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 0 0 9.1742 0 0 03. dmlwrite函数将矩阵数据写入指定分隔符的ASCII格式文件语法:dlmwrite(文件名, 数据, 分隔符, 起始行, 起始列)dlmwrite(文件名, 数据

10、, -append)-append表示将矩阵数据写到文本末尾,若不指定将覆盖原文本数据。例. (略)4. importdata函数导入带表头的txt或xls数据【将数据存入结构体】语法:A = importdata(文件名, 分隔符, n); N表示n行表头注:也可以读入图片【x=importdata(tupian.jpg); image(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

11、.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, ,1)x.datax.textdata运行结果:x = data: 5x7 double textdata: Day1 Day2 Day3 Day4 Day5 Day6 Day7colheaders: Day1 Day2 Day3 Day4 Day5 Day6 Day7ans

12、= 95.0100 76.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 Day3 Da

13、y4 Day5 Day6 Day7例7. examp07.xls(Sheet1)文件如下:代码:x = importdata(examp07.xls)x.data.Sheet1x.textdata.Sheet1运行结果:x = data: 1x1 struct textdata: 1x1 structans = 1 60101 6010101 NaN 0 63 63 2 60101 6010102 NaN 0 73 73 3 60101 6010103 NaN 0 0 0 4 60101 6010104 NaN 0 82 82 5 60101 6010105 NaN 0 80 80ans =

14、序号 班名 学号 姓名 平时成绩 期末成绩 总成绩 备注 陈亮 李旭 刘鹏飞 缺考 任时迁 苏宏宇 5. textread与textscan函数它们用法类似,导入混合格式文本注意:使用textscan之前,必须先用fopen打开要读入的文件。语法:C = textscan(fid, format, N, param, value);fid文件句柄;format读取格式;N用该格式读取N次数据;param, value(可选)指定分隔符和值对例8 examp08.txt文件如下:(将数据存入元胞数组)Sally Level1 12.34 45 1.23e10 inf Nan Yes 5.1+3i

15、Joe 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 JoeBillC9 = 5.1000 + 3.0000i 2.2000 - 0.5000i 3.1000 + 0.1000i例9 examp09.dat文件如下(读入固定格式的文件的第一行,忽略其中的浮点值):Sall

16、y 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 = el1y = 45answer = Yes二、 *.xls数据的导入与导出xlsread函数1. 从*.xls导入数据语法:num, txt, raw = xlsread(文件名.xls,工作表, 数据范围)例10 examp10.xls(She

17、et1)文件如下(导入Sheet1的A1至H4数据):代码:num,txt,raw = xlsread(examp02_14.xls,Sheet1, A1:H4)% 数据返回num;文本返回txt;不处理直接作为元胞返回raw运行结果:num = 1 60101 6010101 NaN 0 63 63 2 60101 6010102 NaN 0 73 73 3 60101 6010103 NaN 0 0 0txt = 序号 班名 学号 姓名 平时成绩 期末成绩 总成绩 备注 陈亮 李旭 刘鹏飞 缺考raw = 序号 班名 学号 姓名 平时成绩 期末成绩 总成绩 备注 1 60101 60101

18、01 陈亮 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, Temp; 12 98; 13 99; 14 97;s = xlswrite(tempdata.xls, d, Temp

19、eratures, E1)运行结果:textdata.xlstempdata.xls(Temperatures)最后看一个综合的实例。例12 读取数据、处理日期数据,根据日期绘制开盘价变化趋势图形。ExpData.xlsx文件如下:代码:num,txt = xlsread(ExpData.xlsx); % 读取excel表格中的数据,数值存入num,文本存入txtdate=txt(2:end,1) % 取出日期数据单独处理t=datenum(date) % 将日期转化为数值(方便绘图使用)date 1=datestr(t) % 将数值转化为日期h=figure; % 生成空的图形窗口set(h

20、,color,w); % 将图的背景颜色设为白色plot(t,num(:,1); % 以日期为横坐标,开盘价为纵坐标,绘制图形% plot(t,num(:,1),*); % 绘制散点图datetick(x,23); % 将x轴标注变成日期格式:mm/dd/yyyyxlabel(日期); % 标注x轴ylabel(开盘价); % 标注y轴title=(上海证交所); % 标注图片名称(很奇怪!居然标题显示不出来)运行结果:txt = 时间 开盘价 最高价 最低价 收盘价 成交量 成交金 2014/11/25 2014/11/26 2014/11/27 2014/11/28 2014/12/1 2

21、014/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 date = 2014/11/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/122014/12/15t = 735928 735929 735930 735931 73

22、5934 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. 文本文件的打开:语法:fid=fopen(文件名, 打开方式)fid为文

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

24、式,如果要以文本方式打开,则必须在打方式中加上字符 t:fid=fopen(output.txt,wt+);2. 文本文件的读取语法:A,count=fscanf(fid,format,size);A用来存放读取的数据count(可选)返回读取数据的个数fid为文件句柄format 用来控制读取的数据格式,由 % 加上格式符组成,下表中是常见的格式符,在 % 之后可以加上数据宽度,如 %12dc字符型g浮点数(自动)d十进制整数o八进制e浮点数(科学计数法)s字符串f浮点数(小数形式)x十六进制size(可选)默认为读取整个文件,取值可以是: N读取 N 个数据到一个列向量Inf读取整个文件m

25、,n读取 m n 个数据到一个 m n 矩阵中,按列存放3. 文本文件的写入语法:count=fprintf(fid,format,输出变量列表) 将输出变量按指定的格式写入文件中 若省略 fid,则表示在屏幕上输出 count (可选)返回所写入的数据元素个数 format 以 % 开头,通常由以下几个部分组成: fprintf 命令的格式说明符c字符型g浮点数(自动)d十进制整数o八进制e浮点数(科学计数法)s字符串f浮点数(小数形式)x/X十六进制 format 中还可以使用的特殊字符b退后一格t水平制表符f换页反斜杠n换行单引号r回车%百分号读写的定位(判断和控制文件的读写位置:是否读

26、完,或读写指定位置数据等) Matlab 提供了四种文件位置指针定位函数:fseek:定位到文件的某个位置,若定位成功,status 返回值为 0,否则返回 -1status=fseek(fid,offset,origin)offset 表示位置指针相对偏移的字节数,+表示向末尾走,-表示向开头走;origin 表示参照位置:cof 表示当前位置,bof 表示开始位置, eof 表示末尾; ftell:返回值为从文件开始到指针当前位置的字节数:position=ftell(fid)frewind:将位置指针返回到文件的起始位置:frewind(fid)feof:判断文件位置指针是否达到文件结束位置,若是则返回 1,否则返回0:eofstat=ftell(fid)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1