MATLAB基礎(chǔ)與實例進階-04_第1頁
MATLAB基礎(chǔ)與實例進階-04_第2頁
MATLAB基礎(chǔ)與實例進階-04_第3頁
MATLAB基礎(chǔ)與實例進階-04_第4頁
MATLAB基礎(chǔ)與實例進階-04_第5頁
已閱讀5頁,還剩43頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

2023/2/3機械工業(yè)出版社Page1第4章MATLAB數(shù)據(jù)文件I/O【學習目標】了解導入向?qū)У氖褂檬煜ATLAB文件的基本操作掌握MAT文件、二進制文件、文本文件、音/視頻文件的讀寫2023/2/3機械工業(yè)出版社Page2導入向?qū)У氖褂?.1文件的基本操作4.2讀寫MAT文件4.3讀寫二進制文件4.4第4章MATLAB數(shù)據(jù)文件I/O讀寫文本文件4.5操作音頻/視頻文件4.62023/2/3機械工業(yè)出版社Page34.1導入向?qū)У氖褂么蜷_導入向?qū)Х绞剑簣?zhí)行【File】菜單下的【ImportData】命令;在MATLAB命令行中,鍵入指令uiimport;執(zhí)行【Start】菜單下子菜單下的【ImportWizard】命令2023/2/3機械工業(yè)出版社Page44.1導入向?qū)У氖褂?023/2/3機械工業(yè)出版社Page54.1導入向?qū)У氖褂?023/2/3機械工業(yè)出版社Page64.1導入向?qū)У氖褂?023/2/3機械工業(yè)出版社Page74.2文件的基本操作4.2.1文件的打開與關(guān)閉4.2.2文件的位置控制2023/2/3機械工業(yè)出版社Page81.文件的打開與關(guān)閉fopen函數(shù)的語法形式如下:fileID=fopen(filename)fileID=fopen(filename,permission)fileID=fopen(filename,permission,machineformat)fileID=fopen(filename,permission,machineformat,encoding)[fileID,message]=fopen(filename,...)2023/2/3機械工業(yè)出版社Page91.文件的打開與關(guān)閉函數(shù)各參數(shù)含義如下:filename:要打開的文件的名稱;permission:指定打開文件的模式,MATLAB中文件打開模式如表4-1所示;machineformat:指定文件中數(shù)據(jù)的數(shù)字格式;encoding:指定文件中數(shù)據(jù)的編碼方式;fileID:返回文件標識;message:返回打開文件的消息。2023/2/3機械工業(yè)出版社Page101.文件的打開與關(guān)閉permission說明r以只讀方式打開文件,該文件必須已存在r+以讀寫方式打開文件,該文件必須已存在w以只寫方式打開文件。該文件已存在則更新,不存在則創(chuàng)建新文件w+以讀寫方式打開文件。該文件已存在則更新;不存在則創(chuàng)建新文件a以只寫文件方式打開,把寫入的內(nèi)容增加到文件的結(jié)尾,文件不存在則創(chuàng)建新文件a+以讀寫方式打開文件,把寫入的內(nèi)容增加到文件的結(jié)尾,若文件不存在則創(chuàng)建新的文件W不進行自動洗帶的寫入數(shù)據(jù)(針對于磁帶機的特殊命令)A不進行自動洗帶的添加數(shù)據(jù)(針對于磁帶機的特殊命令)2023/2/3機械工業(yè)出版社Page111.文件的打開與關(guān)閉fclose語法形式如下:status=fclose(fileID)status=fclose('all')fileID:該參數(shù)為fopen函數(shù)返回的文件標識;status:該參數(shù)為操作返回的結(jié)果。如果操作成功,則返回0,否則返回-1;fclose('all')表示關(guān)閉所有已經(jīng)打開的文件。2023/2/3機械工業(yè)出版社Page122.文件的位置控制函數(shù)名稱說明fseek設(shè)定指針在文件中的位置ftell獲得指針在文件中的位置frewind重設(shè)指針到文件起始的位置feof判斷指針是否在文件結(jié)束位置2023/2/3機械工業(yè)出版社Page132.文件的位置控制函數(shù)fseek常用的語法形式如下:fseek(fileID,offset,origin)status=fseek(fileID,offset,origin)函數(shù)各參數(shù)含義如下:fileID:該參數(shù)為fopen函數(shù)返回的文件指針;offset:該參數(shù)為整數(shù)型變量,表示相對于指定位置需要的偏移字節(jié)數(shù),正數(shù)表示向文件末尾偏移,負數(shù)表示向文件開頭偏移,0表示沒有相對偏移;origin:該參數(shù)可以是特定字符串,也可以是整數(shù),表示指針在文件中的起始位置。status:函數(shù)返回的狀態(tài),0表示操作成功,-1表示操作失敗。2023/2/3機械工業(yè)出版社Page142.文件的位置控制

函數(shù)ftell用來獲得當前文件指針的位置,其具體的調(diào)用格式為:

position=ftell(fileID)position為返回值,表示當前文件指針的位置。position是以相對于文件開頭的字節(jié)數(shù)來表示的。如果返回值為-1,表示調(diào)用失敗。

函數(shù)frewind用于把文件指針重新設(shè)置到文件開頭,其語法形式如下:

frewind(fileID)函數(shù)feof用來判斷是否到達文件末尾,其語法形式如下:

status=feof(fileID)status為返回值,當?shù)竭_文件末尾時,status為1;否則為0。2023/2/3機械工業(yè)出版社Page152.文件的位置控制【例4-3】文件內(nèi)位置控制函數(shù)使用示例。%example4_3.m%clc;clearall;closeall;x=1:10filename='mydata.dat';fid=fopen(filename,'wb');%打開文件fwrite(fid,x,'int16'); %寫入數(shù)據(jù)fclose(fid); %關(guān)閉文件fid=fopen(filename,'rb');fseek(fid,5*2,'bof');%設(shè)定指針在文件中的位置y=fread(fid,2,'int16'); %讀取文件2023/2/3機械工業(yè)出版社Page162.文件的位置控制y=y.'pos=ftell(fid)/2%獲得當前文件指針的位置frewind(fid); %把文件指針重新設(shè)置到文件開頭z=fread(fid,10,'int16');%判斷是否到達文件末尾z=z.'status=feof(fid)2023/2/3機械工業(yè)出版社Page174.3讀寫MAT文件4.3.1MAT文件的寫入4.3.2MAT文件的讀取2023/2/3機械工業(yè)出版社Page18 mat文件是MATLAB專用的數(shù)據(jù)文件格式,以雙精度二進制格式保存數(shù)據(jù)。它由128字節(jié)的mat文件頭和其后的數(shù)據(jù)單元組成,文件頭包括MATLAB的版本號、數(shù)據(jù)和文件被創(chuàng)建的時間等信息。4.3讀寫MAT文件2023/2/3機械工業(yè)出版社Page19 MATLAB中使用save函數(shù)可以將工作區(qū)中的數(shù)據(jù)保存為mat文件: savefilename[listofvariable][options]1.MAT文件的寫入2023/2/3機械工業(yè)出版社Page201.MAT文件的寫入【例4-4】save函數(shù)使用示例。%example4_4.m%clc;clearall;closeall;x1=20;x2=30;x3=40;y1=0;%創(chuàng)建變量savexdatax1x2%將x1,x2保存到文件xdata中, %數(shù)據(jù)類型默認為mat數(shù)據(jù)格式savexdata2.datx1x2–ascii%將x1,x2以ascii格式保 %存到文件xdata2.dat中2023/2/3機械工業(yè)出版社Page21 MATLAB中使用load函數(shù)把磁盤中的mat文件數(shù)據(jù)讀入到工作區(qū)中: loadfilename[option]2.MAT文件的讀取2023/2/3機械工業(yè)出版社Page221.MAT文件的寫入【例4-5】load函數(shù)使用示例。將上例中兩個數(shù)據(jù)文件加載到MATLAB工作區(qū)中。>>loadxdata>>whosNameSizeBytesClassAttributesx11x18doublex21x18double>>loadxdata2.dat>>whosNameSizeBytesClassAttributesx11x18double2023/2/3機械工業(yè)出版社Page234.4讀寫二進制文件4.4.1二進制文件的寫入4.4.2二進制文件的讀取2023/2/3機械工業(yè)出版社Page241.二進制文件的寫入

函數(shù)fwrite以自定義格式把二進制數(shù)據(jù)寫入文件。函數(shù)的語法形式如下:fwrite(fileID,A)fwrite(fileID,A,precision)fwrite(fileID,A,precision,skip)count=fwrite(...)函數(shù)各參數(shù)含義如下:fileID:fopen函數(shù)返回的文件標識;A:需要寫入的數(shù)字或字符數(shù)組;skip:指定在每一次寫入輸出文件之前要跳過的字節(jié)數(shù),如果數(shù)據(jù)類型為'bitn'或'ubitn',則skip以比特為單位;count:返回寫入文件變量的數(shù)目。2023/2/3機械工業(yè)出版社Page251.二進制文件的寫入precision:該參數(shù)表示按指定的數(shù)據(jù)類型寫入,MATLAB支持的數(shù)據(jù)類型如表所示數(shù)據(jù)類型標識符說明數(shù)據(jù)類型標識符說明'char*1'8位字符'uint16'16位無符號整數(shù)'schar'8位有符號字符'uint32'32位無符號整數(shù)'uchar'8位無符號字符'uint64'64位無符號整數(shù)'int8'8位整數(shù)'float32'32位浮點數(shù)'int16'16位整數(shù)'float64'64位浮點數(shù)'int32'32位整數(shù)'bitn'n位帶符號整數(shù)(1≤n≤64)'int64'64位整數(shù)'ubitn'n位無符號整數(shù)(1≤n≤64)'uint8'8位無符號整數(shù)2023/2/3機械工業(yè)出版社Page261.二進制文件的寫入【例4-6】二進制文件寫入示例:產(chǎn)生一個正弦信號,以二進制方式將信號寫入文件中。filename='mywritedata.dat';x=1:500;y=100*sin(2*pi*0.02*x);

%產(chǎn)生正弦信號[fid,msg]=fopen(filename,'w');%以寫方式打開文件iffid>0count=fwrite(fid,y,'float64');disp([int2str(count)'valueswritten...']);status=fclose(fid);elsedisp(msg);end2023/2/3機械工業(yè)出版社Page272.二進制文件的讀取

函數(shù)fread以用戶自定義格式從文件中讀取二進制數(shù)據(jù)。函數(shù)的語法形式如下:A=fread(fileID)A=fread(fileID,sizeA)A=fread(fileID,sizeA,precision)A=fread(fileID,sizeA,precision,skip)A=fread(fileID,sizeA,precision,skip,machineformat)[A,count]=fread(...)2023/2/3機械工業(yè)出版社Page282.二進制文件的讀取函數(shù)各參數(shù)含義如下:fileID:fopen函數(shù)返回的文件標識;sizeA:指定讀取文件中變量的數(shù)目,也就是返回矩陣A的維數(shù);precision:指定讀取的數(shù)據(jù)類型。2023/2/3機械工業(yè)出版社Page292.二進制文件的讀取【例4-7】二進制文件讀取示例:將上例中的數(shù)據(jù)文件讀入到工作區(qū)間。clc;clearall;closeall;filename='mywritedata.dat';[fid,msg]=fopen(filename,'r');%打開數(shù)據(jù)文件iffid>0[y,count]=fread(fid,'float64');%讀取數(shù)據(jù)文件disp([int2str(count)'valuesread...']);status=fclose(fid);elsedisp(msg);end2023/2/3機械工業(yè)出版社Page304.5讀寫文本文件4.5.1文本文件的寫入4.5.2文本文件的讀取2023/2/3機械工業(yè)出版社Page31函數(shù)說明csvread讀取以逗號作為間隔符的文本文件csvwrite保存數(shù)據(jù)到文本文件,以逗號作為間隔符dlmread按照指定的間隔符讀取文本文件的數(shù)據(jù)dlmwrte按照指定的間隔符將數(shù)據(jù)寫入文本文件textread按照指定的格式從文本文件中讀取數(shù)據(jù)文本文件的讀寫函數(shù)2023/2/3機械工業(yè)出版社Page321.文本文件的寫入函數(shù)dlmwrte將數(shù)據(jù)按照指定的間隔符寫入到文本文件中,函數(shù)的語法形式如下:dlmwrite(filename,M)dlmwrite(filename,M,'attrib1',value1,'attrib2',value2,...)dlmwrite(filename,M,'-append')函數(shù)各參數(shù)含義如下:filename:指定需要寫入的文件名;M:寫入的數(shù)據(jù)矩陣;‘a(chǎn)ttrib1’,‘a(chǎn)ttrib2’…:函數(shù)的屬性列表。'-append':以追加的方式寫入文件。2023/2/3機械工業(yè)出版社Page331.文本文件的寫入函數(shù)csvwrite是以逗號為間隔將數(shù)據(jù)保存為文本文件,函數(shù)的語法形式如下:csvwrite(filename,M)csvwrite(filename,M,row,col)csvwrite是dlmwrite的一個特例,數(shù)據(jù)的分隔符為逗號,其余用法與dlmwrite類似。2023/2/3機械工業(yè)出版社Page342.文本文件的讀取函數(shù)dlmread用于讀取有分隔符的ASCII文件到矩陣函數(shù)中,函數(shù)的語法形式如下:M=dlmread(filename,delimiter)M=dlmread(filename,delimiter,R,C)M=dlmread(filename,delimiter,range)函數(shù)各參數(shù)含義如下:filename:指定具有分割標志的ASCII文件;delimiter:指定文件元素的分割符,默認分隔符使用逗號;R、C:指定了數(shù)據(jù)在文件中的左上角位置。range:定義的區(qū)域塊的數(shù)值,range=[R1C1R2C2]。也可以使用電子表格符號來指定,range='A1..B7';2023/2/3機械工業(yè)出版社Page352.文本文件的讀取textread函數(shù)的語法形式如下:[A,B,C,...]=textread(filename,format)[A,B,C,...]=textread(filename,format,N)[...]=textread(...,param,value,...)函數(shù)各參數(shù)含義如下:filename:指定讀取的文件名;format:指定讀取數(shù)據(jù)的格式,textread支持的讀取數(shù)據(jù)格式如表4-6所示;N:當N為大于0的整數(shù)時,表示按format指定的數(shù)據(jù)格式讀取N次;當N小于0時,讀取整個文件的數(shù)據(jù);A,B,C,...:返回的數(shù)據(jù)變量,括號里面變量的個數(shù)必須和format中定義的個數(shù)相同。2023/2/3機械工業(yè)出版社Page364.6操作音頻/視頻文件4.6.1音頻文件的導入導出與播放4.6.2視頻文件的導入導出與播放2023/2/3機械工業(yè)出版社Page371.音頻文件的導入導出與播放auread函數(shù):讀取NeXT/Sun格式的音頻文件auwrite函數(shù):寫入NeXT/Sun格式的音頻文件wavread函數(shù):讀取WAVE格式的音頻文件wavwrite函數(shù):寫入WAVE格式的音頻文件sound函數(shù):音頻播放2023/2/3機械工業(yè)出版社Page381.音頻文件的導入導出與播放函數(shù)auread用于讀取NeXT/Sun格式的音頻文件,其常用的語法形式如下:y=auread(aufile)[y,Fs]=auread(aufile)[...]=auread(aufile,N)siz=auread(aufile,'size')函數(shù)各參數(shù)含義如下:aufile:指定讀取的音頻文件名稱;Fs:返回的音頻采樣率,單位為Hz;nbits:返回每個采樣點的比特數(shù);N:從每個通道讀取前N個點;siz:返回音頻數(shù)據(jù)的實際大小,包括樣點數(shù)、通道數(shù)。2023/2/3機械工業(yè)出版社Page391.音頻文件的導入導出與播放與auread相對應的寫入操作是auwrite,其常用的語法形式如下:auwrite(y,aufile)auwrite(y,Fs,aufile)auwrite(y,Fs,N,aufile)auwrite(y,Fs,N,method,aufile)N:指定音頻的編碼比特,N的取值可以是8或16;method:指定音頻的編碼方法,可以是'mu'或'linear。2023/2/3機械工業(yè)出版社Page401.音頻文件的導入導出與播放WAVE格式的讀寫函數(shù)為wavread和wavwrite,wavread函數(shù)的常用語法形式如下:y=wavread(filename)[y,Fs,nbits]=wavread(filename)[y,Fs,nbits,opts]=wavread(filename)[...]=wavread(filename,N)[...]=wavread(filename,[N1N2])siz=wavread(filename,'size')2023/2/3機械工業(yè)出版社Page411.音頻文件的導入導出與播放WAVE格式的音頻文件寫入使用wavwrite,其常用語法形式如下:wavwrite(y,filename)wavwrite(y,Fs,filename)wavwrite(y,Fs,N,filename)2023/2/3機械工業(yè)出版社Page421.音頻文件的導入導出與播放【例4-13】音頻文件的讀取與播放示例。clc;clearall;closeall;file='myaudio.wav';[x,fs,bits]=wavread(file);%讀入聲音文件(*.wav)sound(x,fs,bits);%數(shù)據(jù)通過聲卡轉(zhuǎn)換為聲音n=length(x);t=0:1/fs:1/fs*(n-1);y=x(:,1);%左聲道信號波形數(shù)據(jù)plot(t,y);title(['左聲道聲音波形']);xlabel(['采樣點數(shù)']);2023/2/3機械工業(yè)出版社Page432.視頻文件的導入導出與播放視頻文件的導入導出

函數(shù)aviread讀取avi視頻文件得到MATLABmovie視頻幀,其常用的語法形式如下:mov=aviread(filename)mov=aviread(filename,index)其中index表示視頻幀的幀標記,返回的mov為MATLABmovie的結(jié)構(gòu)體。2023/2/3機械工業(yè)出版社Page442.視頻文件的導入導出與播放視頻文件的導入導出函數(shù)avifile用于創(chuàng)建avi視頻文件,其常用的語法形式如下:aviobj=avifile(filename)avifile(filename,ParameterName,ParameterValue)其中ParameterName,ParameterValue指定了創(chuàng)建的視頻文件的各種參數(shù),包括顏色模式、壓縮格式、質(zhì)量等2023/2/3機械工業(yè)出版社

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論