2012-12-13 87 views
4

在我的圖中,我有2個軸,第一個是信號的時間序列,第二個是信號的ifft。我想添加一個包含信號光譜圖的第三軸。我怎樣才能做到這一點?如何繪製譜圖函數的結果?

% Create the raw signal 
fs = 40; 
t = 0:(1/fs):4; 
y1 = [ sin(2*pi*5*t(t<=2)), sin(2*pi*10*t(t>2)) ]; 

% Compute the ifft of the signal 
Fy1 = abs(ifft(y1)); 
N = numel(t); 
idx = 1:numel(Fy1)/2; 
f = fs*(0:(N-1))/N; 

% Plot the raw signal as a time series 
subplot(311); 
plot(t,y1,'k'); 
xlabel('Time (s)'); 
ylabel('Amplitude'); 

% Plot the spectrum of the signal 
subplot(312); 
plot(f(idx),2*Fy1(idx),'k') 
xlabel('Frequency (cycles/second)'); 
ylabel('Amplitude'); 

我已經使用但我有一個很難解釋它的結果爲圖中的spectrogram功能嘗試。我如何計算光譜圖,以便我有沿x軸的時間和y軸上的振幅?

回答

5

您需要在spectrogram中提供更多輸入參數。你需要的功能的形式是:

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

http://www.mathworks.com/help/signal/ref/spectrogram.html完整的文檔,但基本上你需要定義:

  • windows:用於每個譜估計計算
  • noverlap樣本數量:從譜N中的譜N-1的計算中可以包括多少個樣本
  • F:您希望頻譜評估的頻率爲
  • fs:你信號的採樣頻率。

    subplot(313); 
    imagesc(T, F, log(S)); %plot the log spectrum 
    set(gca,'YDir', 'normal'); % flip the Y Axis so lower frequencies are at the bottom 
    

    :該質量解釋性頻譜的取決於使用正確的輸入到spectrogram功能

然後繪製譜圖。