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')

将变量设置x1. 在这种情况下,它被用来调用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的变量中,其中是“数字”中的数字之一。eval 评估(“运行”)输入字符串中的代码。xd

为什么代码不只是:

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

很奇怪。

于 2013-02-24T09:49:24.377 回答