我是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'');']);
答案 0 :(得分:2)
eval
函数将给定字符串计算为MATLAB表达式;所以,例如
eval('x=1')
将变量x
设置为1
。在这种情况下,它用于在不同的输入上调用wavread
。 wavread
是一个读取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));
很奇怪。