MATLAB基础与编程入门 恒润科技 HIRAIN TECHNOLOGIES 文件输入与输出 HiRain Technologies
文件输入与输出 MATLAB® 基础与编程入门
恒润科技 HiRain Technologies HIRAIN TECHNOLOGIES 本章概述 高级例程 低级例程 ■导入向导 参考: File o commands& Syntax www.hirain.com
2 本章概述 高级例程 低级例程 导入向导 参考:File I/O Commands & Syntax
恒润科技 HiRain Technologies HIRAIN TECHNOLOGIES 文件JO:高级例程 ■SAVE和LOAD 对类似的变量或文 save fname 件名可使用通配符 save fname x y z save fname data★ save fname一 asc 1。 ad fname save fname -mat load fname x y z save fname -v4 1。 ad fname da七a★ 1。 ad fname- ascl1 1。 ad fname-mat > help iofun 参考: File o commands& Syntax www.hirain.com
3 SAVE 和 LOAD load fname load fname x y z load fname data* load fname -ascii load fname -mat 文件I/O:高级例程 save fname save fname x y z save fname data* save fname -ascii save fname -mat save fname -v4 对类似的变量或文 件名可使用通配符 (*) >> help iofun 参考: File I/O Commands & Syntax
恒润科技 HiRain Technologies HIRAIN TECHNOLOGIES 示例: > clear all 8 Clear all variables 保存及 >>x=5;x2=10; 8 Create x and x2 > save xdata x i Save only x into xdata.mat 载入数据 > clear all 8 Clear all variables load xdata 号 Load xdata.mat > whos 8 Note that x is back Name Size Bytes Class 1x1 8 double array Grand total is 1 element using 8 bytes 8 still equals 5 >>x2=10; 号 Recreate x2 >> save xdata x★ 8 Now save using a wild card > clear all 号C1eara11 variables >>1。 ad xdata 号1 oad xdata.mat > whos 8 Both variables were saved Name Size Bytes Class 1x1 8 double array x2 1x1 8 double array Grand total is 2 elements using 16 bytes www.hirain.com
4 示例: 保存及 载入数据 >> clear all % Clear all variables >> x = 5; x2 = 10; % Create x and x2 >> save xdata x % Save only x into xdata.mat >> clear all % Clear all variables >> load xdata % Load xdata.mat >> whos % Note that x is back Name Size Bytes Class x 1x1 8 double array Grand total is 1 element using 8 bytes >> x % Still equals 5 x = 5 >> x2 = 10; % Recreate x2 >> save xdata x* % Now save using a wild card >> clear all % Clear all variables >> load xdata % Load xdata.mat >> whos % Both variables were saved Name Size Bytes Class x 1x1 8 double array x2 1x1 8 double array Grand total is 2 elements using 16 bytes
恒润科技 HiRain Technologies HIRAIN TECHNOLOGIES MAT文件数据压缩 ■在 MATLAB7中保存的MAT文件默认具有压缩功能 ■例如: >>A=ones(1000) > save A14. matA 此时得到数据文件约占用4KB的硬盘空间 在 MATLAB65中完成同样的操作,则占据了约977KB的 硬盘空间 ■如果需要在早期版本 MATLAB6或者65打开 MATLAB7 下保存的MAT数据文件,则需要在保存文件时使用-V6命 令行开关 www.hirain.com
5 MAT文件数据压缩 在MATLAB 7中保存的MAT文件默认具有压缩功能 例如: >> A = ones(1000); >> save A14.mat A 此时得到数据文件约占用4KB的硬盘空间 在MATLAB 6.5中完成同样的操作,则占据了约977KB的 硬盘空间 如果需要在早期版本(MATLAB 6或者6.5)打开MATLAB 7 下保存的MAT数据文件,则需要在保存文件时使用-v6命 令行开关
恒润科技 HiRain Technologies HIRAIN TECHNOLOGIES 从使用分隔符的文件中读取数据 ■ CSVREAD-从文本文件中读取数据,该文本文件使用逗 号分隔数值数据 ■ DLMREAD-从文本文件中读取数据,该文本文件使用分 隔符分隔数值数据 ■ XLSREAD-从EXce数据表中读取数据 ■尝试使用上述不同的函数分别读取下面的文件: > csvexamp. txt > dlmexamp txt >> xlsexamp.x⊥s www.hirain.com
6 从使用分隔符的文件中读取数据 ◼ CSVREAD- 从文本文件中读取数据,该文本文件使用逗 号分隔数值数据 ◼ DLMREAD-从文本文件中读取数据,该文本文件使用分 隔符分隔数值数据 ◼ XLSREAD-从Excel数据表中读取数据 ◼ 尝试使用上述不同的函数分别读取下面的文件: >> csvexamp.txt >> dlmexamp.txt >> xlsexamp.xls
恒润科技 HiRain Technologies HIRAIN TECHNOLOGIES 从文本文件中读取数据 ■读取具有一般结构形式的ASC文本文件 支持C语言函数 fscanf的子集 >>[team,w,1,w, playoff]= textread(' season.txt',"号8号d号d号!) team i Broncos i Falcons I File Edt Text Cell Tools Debug Desktop window Help 1Li。ns 3电。。舀f.伯君唱即沿回 Pa七iots 1 Broncos 14 20.8750 y vIkings 2 Falcons 1420.8750 3 Lions51103125n 4 Patriots 15 1 0.9375 y 5 Vikings 9 7 0.5625 y 14 15 plain text file Ln 1 Col 1 oVR www.hirain.com
7 >> [team, w, l, wp, playoff] = textread('season.txt', '%s %d %d %f %c') team = 'Broncos' 'Falcons' 'Lions' 'Patriots' 'Vikings' w = 14 14 5 15 9 l = 2 ... ◼ 读取具有一般结构形式的 ASCII 文本文件 ◼ 支持 C语言函数 fscanf 的子集 从文本文件中读取数据
恒润科技 HiRain Technologies HIRAIN TECHNOLOGIES 从文本文件中读取数据 同样的操作也可以使用te太 scan函数实现: fid fopen(' season. txt) C= textscan(fid,"%sdd为f暑c") 5x1ce11} [5x1int32] [5x1int32] [5x1 double] [5xl charl eDitor x >>C{1 留息的0母f.|自为龟即组| Broncos 14 20.8750 y 2 Falcons 14 2 0.8750 y 1B卫。ncos 51103125n 4 Patriots 15 1 0.9375 y I Falcons i 5 Vikings 9 7 0.5625 y Li。ns Pa七 riots V立 kings plan tex file www.hirain.com 8
8 从文本文件中读取数据 同样的操作也可以使用textscan函数实现: >> fid = fopen('season.txt'); >> C = textscan(fid,'%s %d %d %f %c') C = {5x1 cell} [5x1 int32] [5x1 int32] [5x1 double] [5x1 char] >> C{1} ans = 'Broncos' 'Falcons' 'Lions' 'Patriots' 'Vikings
恒润科技 HiRain Technologies HIRAIN TECHNOLOGIES 导入一般数据文件 s importdata(' train. wav ' data: [12880x1 double] fs:8192 sound(s data, s fs) ■用 IMPORTDATA命令可以读入文本文件和二进制文件, 它自动查找辅助函数来导入相应类型的文件。 www.hirain.com 9
9 导入一般数据文件 >> s = importdata('train.wav') s = data: [12880x1 double] fs: 8192 >> sound(s.data,s.fs) 用IMPORTDATA 命令可以读入文本文件和二进制文件, 它自动查找辅助函数来导入相应类型的文件
恒润科技 HiRain Technologies HIRAIN TECHNOLOGIES 文件O:低级例程 打开/关闭: 写入: Function Operation Function Operation fopen open file forteo write binary data fclose( close file printf write formatted data sprint write data to string 读取: Function Operation 定位: fread read binary data Function Operation fscanfo read formatted data tello get file position fget(( OR fgets read complete line seeki go to file position sscanf0 read string freewinds return to start of file > help iofun 参考: File o commands& Syntax www.hirain.com
11 文件 I/O:低级例程 Function Operation fopen() open file fclose() close file Function Operation fwrite() write binary data fprintf() write formatted data sprintf() write data to string Function Operation fread() read binary data fscanf() read formatted data fgetl() OR fgets() read complete line sscanf() read string Function Operation ftell() get file position fseek() go to file position frewind() return to start of file 打开/关闭: 定位: 读取: 写入: >> help iofun 参考:File I/O Commands & Syntax