2013-02-24 116 views
2

我是Matlab編碼的初學者。我正在閱讀一個關於語音識別的網絡代碼。在音頻波形是裝載.m文件有這樣的代碼在Matlab中的eval()命令

clc; 
name=['S5T0','S5T1','S6T0','S6T1','S7T0','S7T1','S8T0','S8T1','S9T0','S9T1']; % 
digit=['']; % 

for d=1:length(digit) 
    eval(['x=wavread(''ti_0',digit(d),'apple01.wav.wav'');']); 
    for k=1:4:length(name) 
      [x1 x2]=vadnew(x); 
      eval(['ti_0',digit(d),'F3',name(k:k+3),'=x(100*x1:100*x2);']); 
          %ti_00F3S0T0=wavread('x(1).wav'); 
      x=x(x2*100:length(x)); 
    end 
end 
save ('F3new.mat', 'ti*'); 

有人可以告訴我這行做?:

eval(['x=wavread(''ti_0',digit(d),'apple01.wav.wav'');']); 

回答

2

eval函數將給定的字符串評估爲MATLAB表達式;所以,例如

eval('x=1') 

會設定變量x1。在這種情況下,它被用於在不同的輸入上調用wavreadwavread是一個函數,它讀取WAV的AudioFile,因此,例如在語句:

x=wavread('ti_00apple01.wav.wav'); 

讀取WAV文件「ti_00apple01.wav.wav」到變量x

1

它甫一的ti_0dapple01.wav.wav文件讀入變量帶彈頭的x,其中d是「數字」中的一個數字。 eval評估(「運行」)輸入字符串中的代碼。

爲什麼代碼不只是:

x=wavread(sprintf('ti_0%dapple01.wav.wav',d)); 

很奇怪。