2

私はMatlabコーディングの初心者です。音声認識についてネットから入手したコードを読んでいました。オーディオウェーブがロードされている.mファイルには、次のようなコードがあります

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

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'');']);
4

2 に答える 2

2

このeval関数は、指定された文字列をMATLAB式として評価します。だから、例えば

eval('x=1')

変数xをに設定します1。この場合wavread、さまざまな入力を呼び出すために使用されています。 wavreadはWAVオーディオファイルを読み取る関数であるため、たとえば次のステートメントがあります。

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

WAVファイル'ti_00apple01.wav.wav'を変数に読み込みますx

于 2013-02-24T10:01:44.620 に答える
1

弾頭を持つti_0dapple01.wav.wav変数にファイルを読み込むだけです。ここで、「数字」の数字の1つです。eval は、入力文字列のコードを評価 (「実行」) します。xd

コードがそうではない理由:

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

は奇妙です。

于 2013-02-24T09:49:24.377 に答える