【发布时间】:2015-03-09 20:57:54
【问题描述】:
我想实现一个系统来识别 0-9 之间的数字。我有一个 TemplateSet 和一个 TestSet 记录的数字在 0-9 之间的音频信号。我必须在所有音频文件之间进行互相关,以找到它们之间的最佳相似性。之后,我应该对每个信号进行时移以使其同步,以便将其与其他信号进行比较以获得最佳结果。我不知道如何实现时移。
MaxSize=[0,0];
for i=1:9
TempSize=size(temp{i});
TestSize=size(test{i});
if(TempSize(1)>MaxSize(1))
MaxSize(1)=TempSize(1);
end
if(TestSize(1)>MaxSize(1))
MaxSize(1)=TestSize(1);
end
end
for j=1:9
TsSize=(MaxSize-size( temp{j}));
TpSize=(MaxSize-size( test{j}));
temp{j}(end+TsSize)=0;
test{j}(end+TpSize)=0;
end
%------------ Euclidean distance-----
sum=0;
index=zeros(1,9);
Distance=zeros(9,9);
for m =1:9
MinDistance=10000;
for n=1:9
Distance(m,n)= norm(test{m}-temp{n},2);
if (Distance< MinDistance)
index(m,n)=n;
MinDistance=Distance;
end
end
if(index(m)==m)
sum=sum+1;
end
end
%--------------------------------------------------------------
TimeDiff=zeros(9,9);
for l=1:9
for k=1:9
[c,lag]=xcorr(test{l},temp{k});
TimeDiff(l,k)=max(abs(c));
end
end
【问题讨论】: