1

私はmatlab guiを作成し、いくつかの軸を持ついくつかの要素を持っています。を使用して、ploter1(最初の軸)に希望のプロットの1つをプロットします

plot(handles.ploter1,xx); title(handles.ploter1,'Waveform');

それは大丈夫ですが、私はspecgramを使用し、specgramの結果を別の軸にプロットしたいのですが、どうすればそれができるのかわからない:(
私はテストします

specgram(wav,N,fs,hamming(N/4),round(0.9*N/4));xlabel('time, s');

また

specgram(handles.ploter2,wav,N,fs,hamming(N/4),round(0.9*N/4));xlabel('time, s');

しかし、私にエラーを返すか、何も返さない!!! ここに画像の説明を入力

私を助けてください。どうもありがとうございます

4

1 に答える 1

3

編集

bdecaf のコメントに記載されているように、機能するはずの機能は、現在の軸を設定することです。

axes(handles.ploter2);

今、ちょうど使用するとき

spectrogram(x,window,noverlap,F)]

プロットは指定された軸上にある必要があります。そうでない場合は、次を試してください。

hold on

前!

specgram またはspectogram には、プロットのパラメーターがありません。後で定義する必要があります。

最初に次の方法で結果を取得することをお勧めします。

[S,F,T]=spectrogram(x,window,noverlap,F)]

次に、特定の軸にプロットします。

plot(handles.ploter2, S,F)

しかし、どのパラメーターをプロットしたいのかわかりません。ドキュメントをご覧ください。

ドキュメントから:

[S,F,T] = spectrogram(...) は、スペクトログラムが計算される周波数のベクトル F と時間のベクトル T を返します。F の長さは S の行数に等しくなります。T の長さは k (上記で定義) であり、T の値は各セグメントの中心に対応します。

[S,F,T] = spectrogram(x,window,noverlap,F) は、Hz 単位の周波数のベクトル F を使用します。F は、少なくとも 2 つの要素をもつベクトルでなければなりません。このケースでは、Goertzel アルゴリズムを使用して F の周波数でスペクトログラムを計算します。指定された周波数は、信号の解像度に見合った最も近い DFT ビンに丸められます。nfft または nfft のデフォルトが使用される他のすべての構文ケースでは、短時間フーリエ変換が使用されます。返される F ベクトルは、丸められた周波数のベクトルです。T は、スペクトログラムが計算される時間のベクトルです。F の長さは、S の行数に等しくなります。T の長さは、上で定義したように k に等しく、各値は各セグメントの中心に対応します。

[S,F,T] = spectrogram(x,window,noverlap,F,fs) は、上記のように Hz 単位の周波数のベクトル F を使用し、Hz 単位の fs サンプリング周波数を使用します。fs が空の [] として指定されている場合、デフォルトは 1 Hz です。

于 2013-10-01T09:00:01.077 に答える