1

サブプロットに2つのことを表示しようとしています

1. サブプロット上のフレーム (211) 上の信号のセグメント 2. 一部のフォルマントの値 - サブプロット上の (212)

フレームごとに表示するために「一時停止」を使用しています。

そして、ここに私の問題があります:

最初のサブプロットはフレームごとに表示されますが、2 番目のサブプロットではフレームが前のサブプロットに追加されるため、フォルマントの値の間で実際に成功することはできません。

誰かが私の2番目のサブプロットに現在のフレームのみのフォルマントを持ち、2番目のフレームに追加されないようにするのを手伝ってもらえますか?

これが私のコードです:

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
4

1 に答える 1

0

十分な速さで更新されていないようです。drawnowの前に使用しpauseます。それはおそらくそれを修正する必要があります。

于 2011-05-21T14:11:19.680 に答える