Можно использовать преобразование Фурье, чтобы анализировать изменения в данных, такие как событие по своей природе за время периода.
В течение почти 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')