【发布时间】:2014-04-16 02:43:36
【问题描述】:
我正在构建基于时间对齐距离的语音识别,并且 我有这样的数据:
tes = 1 x 160 double
refr = 1 x 54 double
然后我会这样做
[rows,A] = size(tes);
[rows,B] = size(refr);
matr = zeros(A);
for b = 1:A
for e = b+1:A
tes_pot = tes(1,b:e);
matr(b,e) = TA(tes_pot,refr);
end
end
TA 是以下函数:
function ans = TA(test, ref)
[rows,N] = size(test);
[rows,M] = size(ref);
if(N>M)
for ix = 1:N
Y{ix} = fix(M/N*ix);
end
else
for ix = 1:M
Y{ix} = fix(N/M*ix);
end
end
Y = cell2mat(Y);
Y(Y == 0) = 1;
if(N>M)
for j=1:N
d(j)=abs(test(j)-ref(Y(1,j)));
end
else
for j=1:M
d(j)=abs(ref(j)-test(Y(1,j)));
end
end
ans = sum(d);
效果很好,但是当我对许多refr 数据执行此操作时,执行此操作需要很长时间(执行 100 个refr 数据大约需要 15 多分钟)。是否有任何帮助来简化此代码?
【问题讨论】:
标签: matlab for-loop matrix time speech-recognition