0
私は、関数内に組み込まれていない私の手によって音波のあらゆるフレームに自己相関関数を行う方法について質問したいと思います。私はコードを行い、それが正しいか間違っているかわかりません助けてください も、私は式hereに基づいてピッチ周期自己相関のmatlab
[sound, Fs]= wavread('aa.wav');
subplot(5,1,1);plot (sound);title('The Orignal Wave')
frameSize= 10/10^3;
overlapSize= 5/10^3;
frameSize_samples = round(Fs*frameSize);
overlapSize_samples= round(overlapSize* Fs);
shift = frameSize_samples-overlapSize_samples;
nframes=ceil((length(sound)-frameSize_samples)/shift);
frames = zeros(nframes, frameSize_samples);
for i=1:nframes
frames(i,:) = sound(((i-1)*shift+ 1):((i-1)*shift+ frameSize_samples))';
end
subplot(5,1,2);plot (frames(:));title(' Wave after framing')
w = rectwin(frameSize_samples)';
frames1 = zeros(nframes, frameSize_samples);
for i=1:nframes
frames1(i,:)=(frames(i,:).*w);
end
%/////////////////////////////////////////////////////////
% calc energy
numSamples = length(sound);
energy = zeros(1,nframes);
for frame = 1:nframes
energy(frame) = sum(frames1(frame).^2); %# Calculate frame energy
end
subplot(5,1,3);plot (energy(:));title(' Energy')
% calc autocorrelation
autocorrelation = zeros(1,nframes);
for i=1:nframes
for k = 0:frameSize_samples
autocorrelation(i,:)= sum(frames(i)*frames(i+k));
end
end
subplot(5,1,4);plot (autocorrelation(:));title(' autocorrelation')
私は自己相関関数が何をするのか理解していますが、私は本当にそれを行うことはできませんすべての行は、自己相関のマトリックスを持っています私は行列が自己相関=ゼロ(nframes、frameSize_samples)になると思います。 – marmar