MATLAB文件操作相關命令
5.2.4 輸入輸出語句 (1) 實時交互輸入輸出 input;keyboard (2) 完全復制式的文件存取 *1) save save save '文件名' x save '文件名' x y z save '文件名' x y z –ascii save '文件名' x y z –ascii –double save '文件名' x y z –ascii –double –tabs save '已有文件名' x y z –append 注1:save 的默認文件名是 fname.m 注2:–ascii 8字節 ascii碼方式 注3:–ascii 16字節 ascii碼方式 注3:–ascii –double –tabs 格式排列 注3:–append 續后存放 *2) load load load '文件名' 注1:load 的默認文件名是 fname.m (3) 文件存取管理(建立與讀寫) 文件管理(打開、寫入、讀出、關閉、定位), *1)“fopen”打開文件,賦予文件代號。 語法1:FID= FOPEN(filename,permission) 用指定的方式打開文件 FID=+N(N是正整數):表示文件打開成功,文件代號是N. FID=-1 : 表示文件打開不成功。 FID在此次文件關閉前總是有效的。 如果以讀方式打開,matlab首先搜索工作目錄,其次搜索matlab的其他目錄,“permission”是打開方式參數。 打開方式參數由以下字符串確定: r 讀出 w 寫入(文件若不存在,自動創建) a 后續寫入(文件若不存在,自動創建) r+ 讀出和寫入(文件應已存在) w+ 重新刷新寫入,(文件若不存在,自動創建) a+ 后續寫入(文件若不存在,自動創建)) w 重新寫入,但不自動刷新 a 后續寫入,但不自動刷新 文件的存儲格式:文件打開的默認方式是:二進制。以文本方式打開,可以在方式參 數“permission”中加入“t”文件將,如“rt”,“wt+” 語法2:[fid,message]= FOPEN(filename,permission) FID=-1 ,文件打開不成功時,返回錯誤信息 語法3:[fid,message]= FOPEN(filename,permission,machineformat) permission: 用指定的方式打開文件。 machineformat: 指定讀寫時用的數據格式。 數據格式(machineformat)取值如下 'native' or 'n' Local machine format - the default 'ieee-le' or 'l' IEEE 浮點數( little-endian byte ordering) 'ieee-be' or 'b' IEEE 浮點數( big-endian byte ordering) 'vaxd' or 'd' VAX D 浮點數 (VAX ordering) 'vaxg' or 'g' VAX g 浮點數 (VAX ordering) 'cray' or 'c' Cray 浮點數 (big-endian byte ordering) 長型數據 'ieee-le.l64' or 'a' IEEE 浮點數(little-endian byte ordering和64 位) long data type 'iecc-be.l64' or 's' IEEE 浮點數(big-endian byte ordering和64 位) long data tw 語法4: [filename,permission,machineformat]=fopen(fid)。 查看打開文件的情況返回文件名、打開方式、文件格式。如果fid不存在,則返回變量。 fid=fopen('allall') 返回當前所有打開的文件。 *2)“fwrite”以二進制形式,向文件寫入數據。 語法1:count=fwrite(fid,a,precision) 將矩陣a 寫入fid指向的打開的文件,matlab 自動將a元值轉換成precision規定的精度(見后),寫成列的形式。count是返回值,寫入成功,返回寫入數據個數,否則返回0。 語法2:count=fwrite(fid,a,precision,skip) skip:取正整數n , 將矩陣a 以步長n 跳選數值寫入fid指向的打開的文件,例如,a=1,2,3,4,5,6,7,8,9 ;skip=2; 則輸入 _,_,3,_,_,6,_,_,9。這對非連續數據場,定長插入數據極有意義。 *3)“fread”以二進制形式,從文件讀出數據。 語法1:[a,count]=fread(fid,size,precision) 語法2:[a,count]=fread(fid,size,precision,skip) size: 不指定 :到尾返回讀。 N : 讀出N個數據,構成列向量。 inf : 讀出fid指向的打開的文件的全部數據。 [M,N] : 讀出N個數據,構成列向量,填入M*N矩陣 precision(精度) precision(精度)規定了以浮點數、整型數、字符讀出時字節數。matlab 的precision(精度)的表達式與c語言、fortran語言、是一致的。不規定precision(精度),則字符默認為: ucher、則數值默認為:雙精度 。 以下precision(精度)將保證讀出具有一致的體積。 MATLAB C or Fortran Descriphon(精度) 'char' 'char*l' 8 字節數,字符型 'uchar' 'unsigned char' 8 字節數 'schar' 'signed char' 8 字節數,字符型 'int8' 'integer*1' 8 字節數,整型數 'intl6' 'integer*2' 16 字節數,整型數. 'int32' 'integer*4' 32 字節數,整型數. 'int64' 'integer*8' 64 字節數,整型數 'uint8' 'integer*l' 8 字節數 'uintl6' 'integer*2' 16 字節數 'uint32' 'integer*4' 32 字節數 'uint64' 'integer*8' 64 字節數 'float32' 'real*4' 浮點數, 32 字節數 'float64' 'real*8' 浮點數, 32 字節數 以下precision(精度)將不保證讀出具有一致的體積。 MATLAB C or Fortran Descriphon(精度) 'short' 'short' 16 字節數,整型數 'int' 'int' 32 字節數,整型數 'long' 'long' 32 (64) 字節數,整型數 'uShort' 'Unsigned short' 16 字節數 'uint' 'Unsigned int' 32 字節數 'ulong' 'unsigned long' 32 (64) 字節數 'float' 'float' 浮點數, 32 字節數 'double' 'double' 浮點數, 64 字節數 以下precision(精度)規定讀出指定的體積n。 'bitN' N字節數,整型數 1<=N<=64 'ubitN' N字節數, 1<=N<=64 *4)從文件中有格式地讀數據 fscanf 語法1:[a,count]=fscanf(fid,format,size) 根據指定的格式從fid 文件按照格式format讀出數據并按size的格式放入內存。 a :讀出的數據放入內存的變量名 count :返回值。0:失敗、n>0:成功,n是讀出數據個數。 fid :文件號 size :a的數據的格式 N : 列向量 inf : 讀出文件全部數據 [M,N] : 讀出數據以M*N的格式放入變量名a內 format :讀出數據的格式 format是字符形式,與C語言基本相同。字符形式中有“%”與字符集(d,i,o,u,x,e,f,g,s,c,…)搭配構成。 如: %s:單字符讀 %c:讀space字符 例:s=fscanf(fid,'%s') 返回一個字符。 a=fscanf(fid,'%5d') 返回一個五位十進制整數。 *5)關閉文件 fclose 語法1:fclose(fid) 語法2:fclose('all') *6)向文件寫數據 printf 語法1:count=printf(fid,format,a,b,s,……) 例: x=0:0.1:1; y=[x;exp(x)]; fid=fopen('exp.txt','w') fprintf(fid,'%6.2 %12.8f\n',y); 計算結果: 0.0 1.00000000 0.1 1.10517092 1.00 2.71828183 *8) 指針放到文件頭:frewind 語法1:frewind(fid) , hansi-font-family: 'Times New Roman'; mso-ascii-font-family: 'Times New Roman'>以下precision(精度)規定讀出指定的體積n。 'bitN' N字節數,整型數 1<=N<=64 'ubitN' N字節數, 1<=N<=64 *4)從文件中有格式地讀數據 fscanf 語法1:[a,count]=fscanf(fid,format,size) 根據指定的格式從fid 文件按照格式format讀出數據并按size的格式放入內存。 a :讀出的數據放入內存的變量名 count :返回值。0:失敗、n>0:成功,n是讀出數據個數。 fid :文件號 size :a的數據的格式 N : 列向量 inf : 讀出文件全部數據 [M,N] : 讀出數據以M*N的格式放入變量名a內 format :讀出數據的格式 format是字符形式,與C語言基本相同。字符形式中有“%”與字符集(d,i,o,u,x,e,f,g,s,c,…)搭配構成。 如: %s:單字符讀 %c:讀space字符 例:s=fscanf(fid,'%s') 返回一個字符。 a=fscanf(fid,'%5d') 返回一個五位十進制整數。 *5)關閉文件 fclose 語法1:fclose(fid) 語法2:fclose('all') *6)向文件寫數據 printf 語法1:count=printf(fid,format,a,b,s,……) 例: x=0:0.1:1; y=[x;exp(x)]; fid=fopen('exp.txt','w') fprintf(fid,'%6.2 %12.8f\n',y); 計算結果: 0.0 1.00000000 0.1 1.10517092 1.00 2.71828183 *8) 指針放到文件頭:frewind 語法1:frewind(fid)