2017-01-08 5 views
0

MATLABのspectrogram関数で生成されたプロットを、そのx軸が時間を表していないが、別の物理信号y2が同時にキャプチャされるようにカスタマイズすることができるかどうかを知りたいと思います。入力信号y1(スペクトログラムの計算に使用)。したがって、y1y2は、次の例のようにx軸と同じタイムスタンプを持つと仮定できます。任意の軸のスケールを制御するためにMATLABのスペクトログラム関数の出力をカスタマイズする

N = 1024; 
n = 0:N-1; 
w0 = 2*pi; 
y1 = sin(w0*n); 
y2 = n; 
spectrogram(y1,'yaxis'); 

答えて

0

、手動でimagescを使用してスペクトログラムをプロットできます。 y1で元の結果がすべてゼロであるので

  1. は、2*pi/102*piからw0を変更:私はあなたのコードに2つの軽微な変更を行った

    N = 1024; 
    n = 0:N-1; 
    w0 = 2*pi/10; 
    y1 = sin(w0*n); 
    y2 = n; 
    
    % compute spectrogram 
    [s,w,t]=spectrogram(y1,'yaxis'); 
    
    % find values in y2 corresponding to spectrogram time-grid 
    t2 = interp1((1:N), y2, t); 
    
    % use imagesc to plot spectrogram 
    figure; 
    imagesc(t2,w/pi,10*log10(abs(s.^2)/length(w)/pi)) 
    set(gca,'YDir','normal'); 
    colorbar; 
    ylabel('Normalized Frequency (\times \pi rad/sample)'); 
    % caxis([-160, 20]) % manually tweak the color range for best detail 
    

    注:ここでは方法です。

  2. y2をスペクトログラムのデフォルトである1:N以外に変更しました。

私はまた、内蔵のspectrogramプロットは、あなたがsample rateの指定を含む、さまざまな方法でスケール軸を制御できないことを指摘しなければなりません。

関連する問題