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

下載本文檔

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

文檔簡(jiǎn)介

1、2022-3-23機(jī)械工業(yè)出版社Page 1【學(xué)習(xí)目標(biāo)】l了解導(dǎo)入向?qū)У氖褂胠熟悉MATLAB文件的基本操作l掌握MAT文件、二進(jìn)制文件、文本文件、音/視頻文件的讀寫2022-3-23機(jī)械工業(yè)出版社Page 2導(dǎo)入向?qū)У氖褂脤?dǎo)入向?qū)У氖褂?.1文件的基本操作文件的基本操作4.2讀寫讀寫MATMAT文件文件4.3讀寫二進(jìn)制文件讀寫二進(jìn)制文件4.4讀寫文本文件讀寫文本文件4.5操作音頻操作音頻/ /視頻文件視頻文件4.62022-3-23機(jī)械工業(yè)出版社Page 3打開導(dǎo)入向?qū)Х绞剑捍蜷_導(dǎo)入向?qū)Х绞剑簎執(zhí)行執(zhí)行【File】菜單下的菜單下的【Import Data】命令;命令;u在在MATLAB命令行

2、中,鍵入指令命令行中,鍵入指令uiimport;u執(zhí)行執(zhí)行【Start】菜單下子菜單下的菜單下子菜單下的【Import Wizard】命令命令2022-3-23機(jī)械工業(yè)出版社Page 42022-3-23機(jī)械工業(yè)出版社Page 52022-3-23機(jī)械工業(yè)出版社Page 62022-3-23機(jī)械工業(yè)出版社Page 74.2.1 文件的打開與關(guān)閉文件的打開與關(guān)閉4.2.2 文件的位置控制文件的位置控制2022-3-23機(jī)械工業(yè)出版社Page 8l fopen函數(shù)的語(yǔ)法形式如下:fileID = fopen(filename)fileID = fopen(filename, permission)

3、fileID = fopen(filename, permission, machineformat)fileID = fopen(filename, permission, machineformat, encoding)fileID, message = fopen(filename, .)2022-3-23機(jī)械工業(yè)出版社Page 9函數(shù)各參數(shù)含義如下:filename:要打開的文件的名稱;permission:指定打開文件的模式,MATLAB中文件打開模式如表4-1所示;machineformat:指定文件中數(shù)據(jù)的數(shù)字格式;encoding:指定文件中數(shù)據(jù)的編碼方式;fileID:返回文

4、件標(biāo)識(shí);message:返回打開文件的消息。2022-3-23機(jī)械工業(yè)出版社Page 10permission說(shuō)明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ī)的特殊命令)2022-3-23機(jī)械工業(yè)出

5、版社Page 11lfclose語(yǔ)法形式如下:status = fclose(fileID)status = fclose(all)fileID:該參數(shù)為fopen函數(shù)返回的文件標(biāo)識(shí);status:該參數(shù)為操作返回的結(jié)果。如果操作成功,則返回0,否則返回-1;fclose(all)表示關(guān)閉所有已經(jīng)打開的文件。2022-3-23機(jī)械工業(yè)出版社Page 12函數(shù)名稱說(shuō) 明fseek設(shè)定指針在文件中的位置ftell獲得指針在文件中的位置frewind重設(shè)指針到文件起始的位置feof判斷指針是否在文件結(jié)束位置2022-3-23機(jī)械工業(yè)出版社Page 13函數(shù)fseek常用的語(yǔ)法形式如下:fseek(f

6、ileID, 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表示操作失敗。2022-3-23機(jī)械工業(yè)出版社Page 14函數(shù)ftell用來(lái)獲得當(dāng)前文件指針的位置,其具體的調(diào)用格式為:position

7、= ftell(fileID)position為返回值,表示當(dāng)前文件指針的位置。position是以相對(duì)于文件開頭的字節(jié)數(shù)來(lái)表示的。如果返回值為-1,表示調(diào)用失敗。函數(shù)frewind用于把文件指針重新設(shè)置到文件開頭,其語(yǔ)法形式如下:frewind(fileID)函數(shù)feof用來(lái)判斷是否到達(dá)文件末尾,其語(yǔ)法形式如下:status = feof(fileID)status為返回值,當(dāng)?shù)竭_(dá)文件末尾時(shí),status為1;否則為0。2022-3-23機(jī)械工業(yè)出版社Page 15【例4-3】文件內(nèi)位置控制函數(shù)使用示例。%example4_3.m%clc;clear all;close all;x=1:10

8、filename=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); %讀取文件2022-3-23機(jī)械工業(yè)出版社Page 16y=y.pos=ftell(fid)/2 %獲得當(dāng)前文件指針的位置frewind(fid) ; %把文件指針重新設(shè)置到文件開頭z=fread(fid,10,int16); %判斷是否到達(dá)文件末尾z=

9、z.status = feof(fid)2022-3-23機(jī)械工業(yè)出版社Page 174.3.1 MAT文件的寫入文件的寫入4.3.2 MAT文件的讀取文件的讀取2022-3-23機(jī)械工業(yè)出版社Page 18mat文件是文件是MATLAB專用的數(shù)據(jù)文件專用的數(shù)據(jù)文件格式,以雙精度二進(jìn)制格式保存數(shù)據(jù)。它格式,以雙精度二進(jìn)制格式保存數(shù)據(jù)。它由由128字節(jié)的字節(jié)的mat文件頭和其后的數(shù)據(jù)單元文件頭和其后的數(shù)據(jù)單元組成,文件頭包括組成,文件頭包括 MATLAB的版本號(hào)、數(shù)的版本號(hào)、數(shù)據(jù)和文件被創(chuàng)建的時(shí)間等信息。據(jù)和文件被創(chuàng)建的時(shí)間等信息。2022-3-23機(jī)械工業(yè)出版社Page 19MATLAB中使用

10、中使用save函數(shù)可以將工作函數(shù)可以將工作區(qū)中的數(shù)據(jù)保存為區(qū)中的數(shù)據(jù)保存為mat文件:文件:save filename list of variableoptions2022-3-23機(jī)械工業(yè)出版社Page 20【例4-4】save函數(shù)使用示例。%example4_4.m%clc;clear all;close all;x1 = 20; x2 = 30; x3 = 40; y1=0; %創(chuàng)建變量save xdata x1 x2 %將x1,x2保存到文件xdata中, %數(shù)據(jù)類型默認(rèn)為mat數(shù)據(jù)格式save xdata2.dat x1 x2 ascii %將x1,x2以ascii格式保 %存到文

11、件xdata2.dat中 2022-3-23機(jī)械工業(yè)出版社Page 21MATLAB中使用中使用load函數(shù)把磁盤中的函數(shù)把磁盤中的mat文件數(shù)據(jù)讀入到工作區(qū)中:文件數(shù)據(jù)讀入到工作區(qū)中:load filename option2022-3-23機(jī)械工業(yè)出版社Page 22【例4-5】load函數(shù)使用示例。將上例中兩個(gè)數(shù)據(jù)文件加載到MATLAB工作區(qū)中。 load xdata whos Name Size Bytes Class Attributes x1 1x1 8 double x2 1x1 8 double load xdata2.dat whos Name Size Bytes Clas

12、s Attributes x1 1x1 8 double 2022-3-23機(jī)械工業(yè)出版社Page 234.4.1二進(jìn)制文件的寫入二進(jìn)制文件的寫入4.4.2二進(jìn)制文件的讀取二進(jìn)制文件的讀取2022-3-23機(jī)械工業(yè)出版社Page 24函數(shù)fwrite以自定義格式把二進(jìn)制數(shù)據(jù)寫入文件。函數(shù)的語(yǔ)法形式如下: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

13、:指定在每一次寫入輸出文件之前要跳過(guò)的字節(jié)數(shù),如果數(shù)據(jù)類型為bitn或ubitn,則skip以比特為單位;count:返回寫入文件變量的數(shù)目。2022-3-23機(jī)械工業(yè)出版社Page 25precision:該參數(shù)表示按指定的數(shù)據(jù)類型寫入,MATLAB支持的數(shù)據(jù)類型如表所示數(shù)據(jù)類型標(biāo)識(shí)符說(shuō) 明數(shù)據(jù)類型標(biāo)識(shí)符說(shuō) 明char*18位字符uint1616 位無(wú)符號(hào)整數(shù)schar8 位有符號(hào)字符uint3232 位無(wú)符號(hào)整數(shù)uchar8 位無(wú)符號(hào)字符uint6464 位無(wú)符號(hào)整數(shù)int88 位整數(shù)float3232 位浮點(diǎn)數(shù)int1616 位整數(shù)float6464 位浮點(diǎn)數(shù)int3232 位整數(shù)bit

14、nn位帶符號(hào)整數(shù)(1n64)int6464 位整數(shù)ubitnn位無(wú)符號(hào)整數(shù)(1n64)uint88 位無(wú)符號(hào)整數(shù)2022-3-23機(jī)械工業(yè)出版社Page 26【例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); %以寫方式打開文件if fid 0 count = fwrite(fid,y,float64); disp(int2str(count) values writt

15、en.); status = fclose(fid); else disp(msg); end2022-3-23機(jī)械工業(yè)出版社Page 27函數(shù)fread以用戶自定義格式從文件中讀取二進(jìn)制數(shù)據(jù)。函數(shù)的語(yǔ)法形式如下: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(.)2

16、022-3-23機(jī)械工業(yè)出版社Page 28函數(shù)各參數(shù)含義如下:fileID: fopen函數(shù)返回的文件標(biāo)識(shí);sizeA:指定讀取文件中變量的數(shù)目,也就是返回矩陣A的維數(shù);precision:指定讀取的數(shù)據(jù)類型。2022-3-23機(jī)械工業(yè)出版社Page 29【例4-7】二進(jìn)制文件讀取示例:將上例中的數(shù)據(jù)文件讀入到工作區(qū)間。clc;clear all;close all;filename = mywritedata.dat; fid,msg = fopen(filename,r); %打開數(shù)據(jù)文件if fid 0 y, count = fread(fid,float64); %讀取數(shù)據(jù)文件 di

17、sp(int2str(count) values read.); status = fclose(fid); else disp(msg); end2022-3-23機(jī)械工業(yè)出版社Page 304.5.1文本文件的寫入文本文件的寫入4.5.2文本文件的讀取文本文件的讀取2022-3-23機(jī)械工業(yè)出版社Page 31函數(shù)說(shuō) 明csvread讀取以逗號(hào)作為間隔符的文本文件csvwrite保存數(shù)據(jù)到文本文件,以逗號(hào)作為間隔符dlmread按照指定的間隔符讀取文本文件的數(shù)據(jù)dlmwrte按照指定的間隔符將數(shù)據(jù)寫入文本文件textread按照指定的格式從文本文件中讀取數(shù)據(jù)文本文件的讀寫函數(shù)文本文件的讀寫

18、函數(shù)2022-3-23機(jī)械工業(yè)出版社Page 32函數(shù)dlmwrte將數(shù)據(jù)按照指定的間隔符寫入到文本文件中,函數(shù)的語(yǔ)法形式如下:dlmwrite(filename, M)dlmwrite(filename, M, attrib1, value1, attrib2, value2, .)dlmwrite(filename, M, -append)函數(shù)各參數(shù)含義如下:filename:指定需要寫入的文件名;M:寫入的數(shù)據(jù)矩陣;attrib1,attrib2:函數(shù)的屬性列表。-append:以追加的方式寫入文件。2022-3-23機(jī)械工業(yè)出版社Page 33函數(shù)csvwrite是以逗號(hào)為間隔將數(shù)據(jù)保

19、存為文本文件,函數(shù)的語(yǔ)法形式如下:csvwrite(filename,M)csvwrite(filename,M,row,col)csvwrite是dlmwrite的一個(gè)特例,數(shù)據(jù)的分隔符為逗號(hào),其余用法與dlmwrite類似。2022-3-23機(jī)械工業(yè)出版社Page 34函數(shù)dlmread用于讀取有分隔符的ASCII文件到矩陣函數(shù)中,函數(shù)的語(yǔ)法形式如下:M = dlmread(filename, delimiter)M = dlmread(filename, delimiter, R, C)M = dlmread(filename, delimiter, range)函數(shù)各參數(shù)含義如下:fi

20、lename:指定具有分割標(biāo)志的ASCII文件;delimiter:指定文件元素的分割符,默認(rèn)分隔符使用逗號(hào);R、C:指定了數(shù)據(jù)在文件中的左上角位置。range:定義的區(qū)域塊的數(shù)值,range = R1 C1 R2 C2 。也可以使用電子表格符號(hào)來(lái)指定,range = A1.B7;2022-3-23機(jī)械工業(yè)出版社Page 35textread函數(shù)的語(yǔ)法形式如下:A,B,C,. = textread(filename,format)A,B,C,. = textread(filename,format,N). = textread(.,param,value,.)函數(shù)各參數(shù)含義如下:filenam

21、e:指定讀取的文件名;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ù)相同。2022-3-23機(jī)械工業(yè)出版社Page 364.6.1音頻文件的導(dǎo)入導(dǎo)出與播放音頻文件的導(dǎo)入導(dǎo)出與播放4.6.2視頻文件的導(dǎo)入導(dǎo)出與播放視頻文件的導(dǎo)入導(dǎo)出與播放2022-3-23機(jī)械工業(yè)出版社Page 37l auread函數(shù):讀取函數(shù):讀取NeXT/Sun格式的音頻文件格式的音頻文件l auwrite

22、函數(shù):寫入函數(shù):寫入NeXT/Sun格式的音頻文件格式的音頻文件lwavread函數(shù):讀取函數(shù):讀取WAVE格式的音頻文件格式的音頻文件lwavwrite函數(shù):寫入函數(shù):寫入WAVE格式的音頻文件格式的音頻文件lsound函數(shù):音頻播放函數(shù):音頻播放2022-3-23機(jī)械工業(yè)出版社Page 38函數(shù)auread用于讀取NeXT/Sun格式的音頻文件,其常用的語(yǔ)法形式如下:y = auread(aufile)y,Fs = auread(aufile). = auread(aufile,N)siz = auread(aufile,size)函數(shù)各參數(shù)含義如下:aufile:指定讀取的音頻文件名稱;

23、Fs:返回的音頻采樣率,單位為Hz;nbits:返回每個(gè)采樣點(diǎn)的比特?cái)?shù);N:從每個(gè)通道讀取前N個(gè)點(diǎn);siz:返回音頻數(shù)據(jù)的實(shí)際大小,包括樣點(diǎn)數(shù)、通道數(shù)。2022-3-23機(jī)械工業(yè)出版社Page 39與auread相對(duì)應(yīng)的寫入操作是auwrite,其常用的語(yǔ)法形式如下: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。2022-3-23機(jī)械工業(yè)出版社Page 40W

24、AVE格式的讀寫函數(shù)為wavread和wavwrite,wavread函數(shù)的常用語(yǔ)法形式如下:y = wavread(filename)y, Fs, nbits = wavread(filename)y, Fs, nbits, opts = wavread(filename). = wavread(filename, N). = wavread(filename, N1 N2)siz = wavread(filename,size)2022-3-23機(jī)械工業(yè)出版社Page 41WAVE格式的音頻文件寫入使用wavwrite,其常用語(yǔ)法形式如下:wavwrite(y,filename)wavwr

25、ite(y,Fs,filename)wavwrite(y,Fs,N,filename)2022-3-23機(jī)械工業(yè)出版社Page 42【例4-13】音頻文件的讀取與播放示例。clc;clear all;close all;file=myaudio.wav;x,fs,bits=wavread(file); % 讀入聲音文件(*.wav)sound(x,fs,bits); % 數(shù)據(jù)通過(guò)聲卡轉(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ù));2022-3-23

26、機(jī)械工業(yè)出版社Page 43l視頻文件的導(dǎo)入導(dǎo)出視頻文件的導(dǎo)入導(dǎo)出函數(shù)aviread讀取avi視頻文件得到MATLAB movie視頻幀,其常用的語(yǔ)法形式如下:mov = aviread(filename)mov = aviread(filename, index)其中index表示視頻幀的幀標(biāo)記,返回的mov為MATLAB movie的結(jié)構(gòu)體。2022-3-23機(jī)械工業(yè)出版社Page 44l視頻文件的導(dǎo)入導(dǎo)出視頻文件的導(dǎo)入導(dǎo)出函數(shù)avifile用于創(chuàng)建avi視頻文件,其常用的語(yǔ)法形式如下:aviobj = avifile(filename)avifile(filename, ParameterName, ParameterValue)其中ParameterName,ParameterVal

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論