Анализ циклических данных с БПФом

Можно использовать преобразование Фурье, чтобы анализировать изменения в данных, таких как событие по своей природе за время периода.

В течение почти 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')

Смотрите также

| |

Похожие темы

Была ли эта тема полезной?