簡體   English   中英

在MATLAB中繪制2D Hilbert光譜

[英]Plotting 2D Hilbert Spectrum in MATLAB

我想創建希爾伯特頻譜的二維圖。 我想要的是時間與頻率的關系圖,其中信號的幅度由圖中的顏色變化表示。

我所做的就是這個 ,但是我需要它看起來像這樣

先感謝您

編輯:

我具有使用希爾伯特·黃(Hilbert Huang)變換產生的隨時間變化的幅度和瞬時頻率值。 假設我們僅使用第一個IMF,並且有100個樣本。 那么我們擁有的是:

    instantaneous_frequency = [f1 f2 f3 ... f100]
    instantaneous_amplitude = [a1 a2 a3 ... a100]
    time = [t1 t2 t3 ... t100]

我需要的是一種像第二張圖像一樣繪制它們的方法,而無需使用頻譜圖功能,因為它使用了STFT並且我已經應用了HHT。

產生第一個圖的代碼是:

Time_Window = 1:101;
signal= rand(1,101);
hilb = hilbert(signal);
inst_amp = abs(hilb);
inst_th = angle(hilb);
inst_freq = diff(a_inst_th)/(1/256)/(2*pi); %instantaneous frequency 
%inst_freq = remove_outliers(inst_freq,Time_Window(1:end-1)); 
inst_freq(end+1) = inst_freq(end); % This is done due to diff()
plot(Time_Window*4,inst_freq,'k.','MarkerSize',5)

已經有一個MATLAB函數可以生成頻譜圖 ,看起來很像您想要的。 看看是否能解決您的問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM