1. 程式人生 > >使用 FFT 分析周期性數據

使用 FFT 分析周期性數據

周期性 sting 包含 基礎 all works nbsp ron .cn

可以使用傅裏葉變換來分析數據中的變化,例如一個時間段內的自然事件。

天文學家使用蘇黎世太陽黑子相對數將幾乎 300 年的太陽黑子的數量和大小制成表格。對大約 1700 至 2000 年間的蘇黎世數繪圖。

load sunspot.dat
year = sunspot(:,1);
relNums = sunspot(:,2);
plot(year,relNums)
xlabel(‘Year‘)
ylabel(‘Zurich Number‘)
title(‘Sunspot Data‘)

技術分享圖片

為了更詳細地看太陽黑子活動的周期特性,將對前 50 年的數據繪圖。

plot(year(1:50),relNums(1:50),‘b.-‘);
xlabel(‘Year‘)
ylabel(‘Zurich Number‘)
title(‘Sunspot Data‘)

技術分享圖片

傅裏葉變換是一種基礎的信號處理工具,可確定數據中的頻率分量。使用 fft 函數可獲取蘇黎世數據的傅裏葉變換。刪除存儲數據總和的輸出的第一個元素。繪制該輸出的其余部分,其中包含復傅裏葉系數關於實軸的鏡像圖像。

y = fft(relNums);
y(1) = [];
plot(y,‘ro‘)
xlabel(‘real(y)‘)
ylabel(‘imag(y)‘)
title(‘Fourier Coefficients‘)

技術分享圖片

單獨的傅裏葉系數難以解釋。計算系數更有意義的方法是計算其平方幅值,即計算冪。由於一半的系數在幅值中是重復的,因此您只需要對一半的系數計算冪。以頻率函數的形式繪制功率頻譜圖,以每年的周期數為測量單位。

n = length(y);
power = abs(y(1:floor(n/2))).^2; % power of first half of transform data
maxfreq = 1/2;                   % maximum frequency
freq = (1:n/2)/(n/2)*maxfreq;    % equally spaced frequency grid
plot(freq,power)
xlabel(‘Cycles/Year‘)
ylabel(‘Power‘)

技術分享圖片

太陽黑子活動發生的最大頻率低於每年一次。為了查看更易解釋的周期活動,以周期函數形式繪制冪圖,以每周期的年數為測量單位。該繪圖揭示了太陽黑子活動約每 11 年出現一次高峰。

period = 1./freq;
plot(period,power);
xlim([0 50]); %zoom in on max power
xlabel(‘Years/Cycle‘)
ylabel(‘Power‘)

技術分享圖片

關註公眾號: MATLAB基於模型的設計 (ID:xaxymaker) ,每天推送MATLAB學習最常見的問題,每天進步一點點,業精於勤荒於嬉

技術分享圖片

打開微信掃一掃哦!

使用 FFT 分析周期性數據