matlab中的eval()命令

时间:2013-02-24 09:36:10

标签: matlab eval speech-recognition

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

2 个答案:

答案 0 :(得分:2)

eval函数将给定字符串计算为MATLAB表达式;所以,例如

eval('x=1')

将变量x设置为1。在这种情况下,它用于在不同的输入上调用wavreadwavread是一个读取WAV audiofile的函数,例如声明:

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

将WAV文件'ti_00apple01.wav.wav'读入变量x

答案 1 :(得分:1)

它只是将ti_0dapple01.wav.wav文件读入带有弹头的变量x,其中d是“数字”中的一个数字。 eval评估(“运行”)输入字符串中的代码。

为什么代码不仅仅是:

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

很奇怪。