MATLAB ile zaman ile frekans değişimlerini gözlemlemek amacı ile spectogram fonksiyonu sıklıkla tercih edilmektedir. Bu yazıda kendi spektogram fonksiyonunumuzu oluşturup gösterimini gerçekleştireceğiz. Aşağıda mySpectogram fonksiyonu giriş verisine ait zaman-frekans değişimlerini örnekleme frekansı, FFT boyutu ve örtüşme değerlerine bağlı olarak hesaplamaktadır.
function [oData X Y] = mySpectogram(iData,f_s,FFT_size,FFT_overlap) FFT_res = f_s / FFT_size; [X, Y] = meshgrid( 0 : FFT_res : (FFT_size / 2 - 1) * FFT_res,... ((1 - FFT_overlap) * FFT_size : (1 - FFT_overlap) *... FFT_size : length(iData) - FFT_overlap * FFT_size ) / f_s) ; n_j = 0; for n_i = 1 : (1 - FFT_overlap) * FFT_size : length(iData) - FFT_size n_j = n_j + 1; Data = iData(n_i : n_i + FFT_size - 1); oData(n_j, :) = abs(fft(Data, FFT_size)); end
Aşağıda verilen kodda 1 KHz örnekleme frekansında 1 sn’lik 50 Hz frekansında sinüs sinyalinin zaman frekans değişimi gösterilmektedir.
Aşağıda verilen grafiktende görüleceği üzere tüm zaman boyunca 50 Hz’lik bir sinyal mevctur