проблема с подзаговором в Matlab - PullRequest
1 голос
/ 21 мая 2011

Я пытаюсь отобразить в подпункте две вещи

1.сегмент сигнала на подкадре кадров (211) 2. значения некоторых формант -подпот (212)

И я делаю это для нескольких кадров. Я использую «паузу» для отображения покадрово.

И вот моя проблема:

Отображается первый подзаговоркадр за кадром, но на моем втором субплоте кадры добавляются к предыдущим, поэтому я не могу по-настоящему преуспеть между значениями формант.

Может ли кто-нибудь помочь мне иметь на втором субплоте только формантыдля текущего кадра, а не для добавления во второй кадр!

Вот мой код:

for k=1:Nc

.............

 y_sint=filter(g_p,A_p,g_signal);

  figure(1);
    subplot(211);
   plot(y_sint);

 fm1=0;
  ft1=0;

while((k-1)*N<=(pos+ms))&((pos+ms)<=k*N)
     y1=X(pos:pos+50-1);%calculez coeficientii filtrului folosind metoda lpc
     a1=lpc(y1,ncoeff);
     r1=roots(a1);

      r1=r1(imag(r1)>0.01);
    ffreq=sort(atan2(imag(r1),real(r1))*Fs/(2*pi));%converteste in Hz

     fm1=[fm1 ffreq(3)];

    ft1=[ft1 pos/Fs];




 pos=pos+ms;

end

 subplot(212);

plot(ft1,fm1,'*');

 legend('Formants');

 xlabel('Time (s)');

 ylabel('Frequency (Hz)');

    pause
 end

1 Ответ

0 голосов
/ 21 мая 2011

Похоже, он просто недостаточно быстро обновляется. Используйте drawnow перед pause. Это, вероятно, должно это исправить.

...