




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2023/2/3機(jī)械工業(yè)出版社Page1第4章MATLAB數(shù)據(jù)文件I/O【學(xué)習(xí)目標(biāo)】了解導(dǎo)入向?qū)У氖褂檬煜ATLAB文件的基本操作掌握MAT文件、二進(jìn)制文件、文本文件、音/視頻文件的讀寫2023/2/3機(jī)械工業(yè)出版社Page2導(dǎo)入向?qū)У氖褂?.1文件的基本操作4.2讀寫MAT文件4.3讀寫二進(jìn)制文件4.4第4章MATLAB數(shù)據(jù)文件I/O讀寫文本文件4.5操作音頻/視頻文件4.62023/2/3機(jī)械工業(yè)出版社Page34.1導(dǎo)入向?qū)У氖褂么蜷_導(dǎo)入向?qū)Х绞剑簣?zhí)行【File】菜單下的【ImportData】命令;在MATLAB命令行中,鍵入指令uiimport;執(zhí)行【Start】菜單下子菜單下的【ImportWizard】命令2023/2/3機(jī)械工業(yè)出版社Page44.1導(dǎo)入向?qū)У氖褂?023/2/3機(jī)械工業(yè)出版社Page54.1導(dǎo)入向?qū)У氖褂?023/2/3機(jī)械工業(yè)出版社Page64.1導(dǎo)入向?qū)У氖褂?023/2/3機(jī)械工業(yè)出版社Page74.2文件的基本操作4.2.1文件的打開與關(guān)閉4.2.2文件的位置控制2023/2/3機(jī)械工業(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機(jī)械工業(yè)出版社Page91.文件的打開與關(guān)閉函數(shù)各參數(shù)含義如下:filename:要打開的文件的名稱;permission:指定打開文件的模式,MATLAB中文件打開模式如表4-1所示;machineformat:指定文件中數(shù)據(jù)的數(shù)字格式;encoding:指定文件中數(shù)據(jù)的編碼方式;fileID:返回文件標(biāo)識(shí);message:返回打開文件的消息。2023/2/3機(jī)械工業(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不進(jìn)行自動(dòng)洗帶的寫入數(shù)據(jù)(針對(duì)于磁帶機(jī)的特殊命令)A不進(jìn)行自動(dòng)洗帶的添加數(shù)據(jù)(針對(duì)于磁帶機(jī)的特殊命令)2023/2/3機(jī)械工業(yè)出版社Page111.文件的打開與關(guān)閉fclose語法形式如下:status=fclose(fileID)status=fclose('all')fileID:該參數(shù)為fopen函數(shù)返回的文件標(biāo)識(shí);status:該參數(shù)為操作返回的結(jié)果。如果操作成功,則返回0,否則返回-1;fclose('all')表示關(guān)閉所有已經(jīng)打開的文件。2023/2/3機(jī)械工業(yè)出版社Page122.文件的位置控制函數(shù)名稱說明fseek設(shè)定指針在文件中的位置ftell獲得指針在文件中的位置frewind重設(shè)指針到文件起始的位置feof判斷指針是否在文件結(jié)束位置2023/2/3機(jī)械工業(yè)出版社Page132.文件的位置控制函數(shù)fseek常用的語法形式如下:fseek(fileID,offset,origin)status=fseek(fileID,offset,origin)函數(shù)各參數(shù)含義如下:fileID:該參數(shù)為fopen函數(shù)返回的文件指針;offset:該參數(shù)為整數(shù)型變量,表示相對(duì)于指定位置需要的偏移字節(jié)數(shù),正數(shù)表示向文件末尾偏移,負(fù)數(shù)表示向文件開頭偏移,0表示沒有相對(duì)偏移;origin:該參數(shù)可以是特定字符串,也可以是整數(shù),表示指針在文件中的起始位置。status:函數(shù)返回的狀態(tài),0表示操作成功,-1表示操作失敗。2023/2/3機(jī)械工業(yè)出版社Page142.文件的位置控制
函數(shù)ftell用來獲得當(dāng)前文件指針的位置,其具體的調(diào)用格式為:
position=ftell(fileID)position為返回值,表示當(dāng)前文件指針的位置。position是以相對(duì)于文件開頭的字節(jié)數(shù)來表示的。如果返回值為-1,表示調(diào)用失敗。
函數(shù)frewind用于把文件指針重新設(shè)置到文件開頭,其語法形式如下:
frewind(fileID)函數(shù)feof用來判斷是否到達(dá)文件末尾,其語法形式如下:
status=feof(fileID)status為返回值,當(dāng)?shù)竭_(dá)文件末尾時(shí),status為1;否則為0。2023/2/3機(jī)械工業(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機(jī)械工業(yè)出版社Page162.文件的位置控制y=y.'pos=ftell(fid)/2%獲得當(dāng)前文件指針的位置frewind(fid); %把文件指針重新設(shè)置到文件開頭z=fread(fid,10,'int16');%判斷是否到達(dá)文件末尾z=z.'status=feof(fid)2023/2/3機(jī)械工業(yè)出版社Page174.3讀寫MAT文件4.3.1MAT文件的寫入4.3.2MAT文件的讀取2023/2/3機(jī)械工業(yè)出版社Page18 mat文件是MATLAB專用的數(shù)據(jù)文件格式,以雙精度二進(jìn)制格式保存數(shù)據(jù)。它由128字節(jié)的mat文件頭和其后的數(shù)據(jù)單元組成,文件頭包括MATLAB的版本號(hào)、數(shù)據(jù)和文件被創(chuàng)建的時(shí)間等信息。4.3讀寫MAT文件2023/2/3機(jī)械工業(yè)出版社Page19 MATLAB中使用save函數(shù)可以將工作區(qū)中的數(shù)據(jù)保存為mat文件: savefilename[listofvariable][options]1.MAT文件的寫入2023/2/3機(jī)械工業(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ù)類型默認(rèn)為mat數(shù)據(jù)格式savexdata2.datx1x2–ascii%將x1,x2以ascii格式保 %存到文件xdata2.dat中2023/2/3機(jī)械工業(yè)出版社Page21 MATLAB中使用load函數(shù)把磁盤中的mat文件數(shù)據(jù)讀入到工作區(qū)中: loadfilename[option]2.MAT文件的讀取2023/2/3機(jī)械工業(yè)出版社Page221.MAT文件的寫入【例4-5】load函數(shù)使用示例。將上例中兩個(gè)數(shù)據(jù)文件加載到MATLAB工作區(qū)中。>>loadxdata>>whosNameSizeBytesClassAttributesx11x18doublex21x18double>>loadxdata2.dat>>whosNameSizeBytesClassAttributesx11x18double2023/2/3機(jī)械工業(yè)出版社Page234.4讀寫二進(jìn)制文件4.4.1二進(jìn)制文件的寫入4.4.2二進(jìn)制文件的讀取2023/2/3機(jī)械工業(yè)出版社Page241.二進(jìn)制文件的寫入
函數(shù)fwrite以自定義格式把二進(jìn)制數(shù)據(jù)寫入文件。函數(shù)的語法形式如下:fwrite(fileID,A)fwrite(fileID,A,precision)fwrite(fileID,A,precision,skip)count=fwrite(...)函數(shù)各參數(shù)含義如下:fileID:fopen函數(shù)返回的文件標(biāo)識(shí);A:需要寫入的數(shù)字或字符數(shù)組;skip:指定在每一次寫入輸出文件之前要跳過的字節(jié)數(shù),如果數(shù)據(jù)類型為'bitn'或'ubitn',則skip以比特為單位;count:返回寫入文件變量的數(shù)目。2023/2/3機(jī)械工業(yè)出版社Page251.二進(jìn)制文件的寫入precision:該參數(shù)表示按指定的數(shù)據(jù)類型寫入,MATLAB支持的數(shù)據(jù)類型如表所示數(shù)據(jù)類型標(biāo)識(shí)符說明數(shù)據(jù)類型標(biāo)識(shí)符說明'char*1'8位字符'uint16'16位無符號(hào)整數(shù)'schar'8位有符號(hào)字符'uint32'32位無符號(hào)整數(shù)'uchar'8位無符號(hào)字符'uint64'64位無符號(hào)整數(shù)'int8'8位整數(shù)'float32'32位浮點(diǎn)數(shù)'int16'16位整數(shù)'float64'64位浮點(diǎn)數(shù)'int32'32位整數(shù)'bitn'n位帶符號(hào)整數(shù)(1≤n≤64)'int64'64位整數(shù)'ubitn'n位無符號(hào)整數(shù)(1≤n≤64)'uint8'8位無符號(hào)整數(shù)2023/2/3機(jī)械工業(yè)出版社Page261.二進(jìn)制文件的寫入【例4-6】二進(jìn)制文件寫入示例:產(chǎn)生一個(gè)正弦信號(hào),以二進(jìn)制方式將信號(hào)寫入文件中。filename='mywritedata.dat';x=1:500;y=100*sin(2*pi*0.02*x);
%產(chǎn)生正弦信號(hào)[fid,msg]=fopen(filename,'w');%以寫方式打開文件iffid>0count=fwrite(fid,y,'float64');disp([int2str(count)'valueswritten...']);status=fclose(fid);elsedisp(msg);end2023/2/3機(jī)械工業(yè)出版社Page272.二進(jìn)制文件的讀取
函數(shù)fread以用戶自定義格式從文件中讀取二進(jìn)制數(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機(jī)械工業(yè)出版社Page282.二進(jìn)制文件的讀取函數(shù)各參數(shù)含義如下:fileID:fopen函數(shù)返回的文件標(biāo)識(shí);sizeA:指定讀取文件中變量的數(shù)目,也就是返回矩陣A的維數(shù);precision:指定讀取的數(shù)據(jù)類型。2023/2/3機(jī)械工業(yè)出版社Page292.二進(jìn)制文件的讀取【例4-7】二進(jìn)制文件讀取示例:將上例中的數(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機(jī)械工業(yè)出版社Page304.5讀寫文本文件4.5.1文本文件的寫入4.5.2文本文件的讀取2023/2/3機(jī)械工業(yè)出版社Page31函數(shù)說明csvread讀取以逗號(hào)作為間隔符的文本文件csvwrite保存數(shù)據(jù)到文本文件,以逗號(hào)作為間隔符dlmread按照指定的間隔符讀取文本文件的數(shù)據(jù)dlmwrte按照指定的間隔符將數(shù)據(jù)寫入文本文件textread按照指定的格式從文本文件中讀取數(shù)據(jù)文本文件的讀寫函數(shù)2023/2/3機(jī)械工業(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機(jī)械工業(yè)出版社Page331.文本文件的寫入函數(shù)csvwrite是以逗號(hào)為間隔將數(shù)據(jù)保存為文本文件,函數(shù)的語法形式如下:csvwrite(filename,M)csvwrite(filename,M,row,col)csvwrite是dlmwrite的一個(gè)特例,數(shù)據(jù)的分隔符為逗號(hào),其余用法與dlmwrite類似。2023/2/3機(jī)械工業(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:指定具有分割標(biāo)志的ASCII文件;delimiter:指定文件元素的分割符,默認(rèn)分隔符使用逗號(hào);R、C:指定了數(shù)據(jù)在文件中的左上角位置。range:定義的區(qū)域塊的數(shù)值,range=[R1C1R2C2]。也可以使用電子表格符號(hào)來指定,range='A1..B7';2023/2/3機(jī)械工業(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:當(dāng)N為大于0的整數(shù)時(shí),表示按format指定的數(shù)據(jù)格式讀取N次;當(dāng)N小于0時(shí),讀取整個(gè)文件的數(shù)據(jù);A,B,C,...:返回的數(shù)據(jù)變量,括號(hào)里面變量的個(gè)數(shù)必須和format中定義的個(gè)數(shù)相同。2023/2/3機(jī)械工業(yè)出版社Page364.6操作音頻/視頻文件4.6.1音頻文件的導(dǎo)入導(dǎo)出與播放4.6.2視頻文件的導(dǎo)入導(dǎo)出與播放2023/2/3機(jī)械工業(yè)出版社Page371.音頻文件的導(dǎo)入導(dǎo)出與播放auread函數(shù):讀取NeXT/Sun格式的音頻文件auwrite函數(shù):寫入NeXT/Sun格式的音頻文件wavread函數(shù):讀取WAVE格式的音頻文件wavwrite函數(shù):寫入WAVE格式的音頻文件sound函數(shù):音頻播放2023/2/3機(jī)械工業(yè)出版社Page381.音頻文件的導(dǎo)入導(dǎo)出與播放函數(shù)auread用于讀取NeXT/Sun格式的音頻文件,其常用的語法形式如下:y=auread(aufile)[y,Fs]=auread(aufile)[...]=auread(aufile,N)siz=auread(aufile,'size')函數(shù)各參數(shù)含義如下:aufile:指定讀取的音頻文件名稱;Fs:返回的音頻采樣率,單位為Hz;nbits:返回每個(gè)采樣點(diǎn)的比特?cái)?shù);N:從每個(gè)通道讀取前N個(gè)點(diǎn);siz:返回音頻數(shù)據(jù)的實(shí)際大小,包括樣點(diǎn)數(shù)、通道數(shù)。2023/2/3機(jī)械工業(yè)出版社Page391.音頻文件的導(dǎo)入導(dǎo)出與播放與auread相對(duì)應(yīng)的寫入操作是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機(jī)械工業(yè)出版社Page401.音頻文件的導(dǎo)入導(dǎo)出與播放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機(jī)械工業(yè)出版社Page411.音頻文件的導(dǎo)入導(dǎo)出與播放WAVE格式的音頻文件寫入使用wavwrite,其常用語法形式如下:wavwrite(y,filename)wavwrite(y,Fs,filename)wavwrite(y,Fs,N,filename)2023/2/3機(jī)械工業(yè)出版社Page421.音頻文件的導(dǎo)入導(dǎo)出與播放【例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);%左聲道信號(hào)波形數(shù)據(jù)plot(t,y);title(['左聲道聲音波形']);xlabel(['采樣點(diǎn)數(shù)']);2023/2/3機(jī)械工業(yè)出版社Page432.視頻文件的導(dǎo)入導(dǎo)出與播放視頻文件的導(dǎo)入導(dǎo)出
函數(shù)aviread讀取avi視頻文件得到MATLABmovie視頻幀,其常用的語法形式如下:mov=aviread(filename)mov=aviread(filename,index)其中index表示視頻幀的幀標(biāo)記,返回的mov為MATLABmovie的結(jié)構(gòu)體。2023/2/3機(jī)械工業(yè)出版社Page442.視頻文件的導(dǎo)入導(dǎo)出與播放視頻文件的導(dǎo)入導(dǎo)出函數(shù)avifile用于創(chuàng)建avi視頻文件,其常用的語法形式如下:aviobj=avifile(filename)avifile(filename,ParameterName,ParameterValue)其中ParameterName,ParameterValue指定了創(chuàng)建的視頻文件的各種參數(shù),包括顏色模式、壓縮格式、質(zhì)量等2023/2/3機(jī)械工業(yè)出版社
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 ISO/TR 24589-1:2024 EN Examples of good practice for the management of assets of water supply and wastewater systems - Part 1: Water supply
- 【正版授權(quán)】 ISO 24591-1:2024 EN Smart water management - Part 1: General guidelines and governance
- 2025貝殼房產(chǎn)中介加盟店客戶滿意度調(diào)查及提升措施合同
- 2025年房屋拆除工程環(huán)境保護(hù)與監(jiān)測(cè)合同
- 教學(xué)理念與實(shí)踐探索計(jì)劃
- 課堂游戲與學(xué)習(xí)效果的關(guān)系計(jì)劃
- 圖書發(fā)行渠道拓展計(jì)劃
- 主管年度工作方案計(jì)劃
- 公司企業(yè)文化建設(shè)的年度工作計(jì)劃
- 七年級(jí)下冊(cè)《垂線》課件與練習(xí)
- 湖北省2025屆高三T8聯(lián)盟模擬考數(shù)學(xué)試卷(解析版)
- 2025年北京電子科技職業(yè)學(xué)院高職單招職業(yè)技能測(cè)試近5年常考版參考題庫含答案解析
- 2025年包頭輕工職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫含答案解析
- 二零二五年度文化教育培訓(xùn)中心承包工程2篇
- 2025年蘇州高鐵新城國(guó)有資產(chǎn)控股(集團(tuán))有限公司招聘筆試參考題庫附帶答案詳解
- 2025年廣州中醫(yī)藥大學(xué)順德醫(yī)院(佛山市順德區(qū)中醫(yī)院)招考聘用高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2025年華僑港澳臺(tái)學(xué)生聯(lián)招考試英語試卷試題(含答案詳解)
- 2025-2030年中國(guó)美容院行業(yè)營(yíng)銷創(chuàng)新戰(zhàn)略制定與實(shí)施研究報(bào)告
- 2025年臨床醫(yī)師定期考核必考復(fù)習(xí)題庫及答案(1080題)
- 2025年江蘇省宿遷市事業(yè)單位引進(jìn)名校優(yōu)生120人歷年高頻重點(diǎn)提升(共500題)附帶答案詳解
- 人教版四年級(jí)上冊(cè)寒假數(shù)學(xué)計(jì)算題天天練及答案(共15天)
評(píng)論
0/150
提交評(píng)論