2014-11-22 7 views
3

Я использую метод pwelch в Matlab для вычисления спектров мощности для некоторых измерений скорости ветра. Итак, пока я написал следующий код в качестве примера:об использовании и понимании pwelch в matlab

t = 10800; % number of seconds in 3 hours 
t = 1:t; % generate time vector 
fs = 1; % sampling frequency (seconds) 
A = 2; % amplitude 
P = 1000; % period (seconds), the time it takes for the signal to repeat itself 
f1 = 1/P; % number of cycles per second (i.e. how often the signal repeats itself every second). 
y = A*sin(2*pi*f1*t); % signal 

fh = figure(1); 
set(fh,'color','white','Units', 'Inches', 'Position', [0,0,6,6],... 
    'PaperUnits', 'Inches', 'PaperSize', [6,6]); 
[pxx, f] = pwelch(y,[],[],[],fs); 
loglog(f,10*(pxx),'k','linewidth',1.2); 
xlabel('log10(cycles per s)'); 
ylabel('Spectral Density (dB Hz^{-1})'); 

Я не могу включить сюжет, как у меня нет достаточного количества очков репутации

ли это смысл? Я борюсь с идеей иметь шум в правой части сюжета. Сигнал, который был разложен, представлял собой синусоидальную волну без шума, откуда этот шум? Означает ли тот факт, что значения на оси y отрицательны, что эти частоты незначительны? Кроме того, что было бы лучшим способом написать единицы по оси y, если скорость ветра измеряется в м/с, может ли это быть преобразовано в нечто более значимое для ученых-экологов?

ответ

3

Ваши результаты в порядке. dB может ввести в заблуждение.

линейный участок будет получить хороший вид,

Fs = 1000;     % Sampling frequency 
T = 1/Fs;      % Sample time 
L = 1000;      % Length of signal 
t = (0:L-1)*T;    % Time vector 
y = sin(2 * pi * 50 * t);  % 50Hz signal 

fft подход,

NFFT = 2^nextpow2(L); % Next power of 2 from length of y 
Y = fft(y,NFFT)/L; 
f = Fs/2*linspace(0,1,NFFT/2+1); 
subplot(1,2,1); 
plot(f,2*abs(Y(1:NFFT/2+1))) 
xlabel('Frequency (Hz)') 
ylabel('|Y(f)|') 

pwelch подход,

subplot(1,2,2); 
[pxx, freq] = pwelch(y,[],[],[],Fs); 
plot(freq,10*(pxx),'k','linewidth',1.2); 
xlabel('Frequency (Hz)'); 
ylabel('Spectral Density (Hz^{-1})'); 

enter image description here

Как вы можете видеть, они оба имеют пик в 50Hz.

Использование loglog для обоих,

enter image description here

Так что "шум" имеет 1e-6 и существует в fft, а также, и могут быть проигнорированы.

Для вашего второго вопроса, я не думаю, что ось изменится, это будет frequency. Для Fs вы должны использовать частоту дискретизации скорости ветра, например, если у вас есть 10 образцов скорости за одну секунду, ваш Fs - 10. Более высокие частоты в вашем графике означают больше изменений скорости ветра, а более низкие частоты представляют меньшие изменения скорости.

+1

Действительно хороший и всесторонний ответ. +1 – am304

+0

Спасибо за ответ. Я понимаю, что Гц означает циклы в секунду, поэтому я могу использовать значения на оси х для вычисления периода сигнала. Однако, что означает, что на Гц присутствуют на оси yaxis? Как это можно использовать? Например, что означает спектральная плотность 0,8 Гц-1? –

+0

@EmmaTebbs. По оси 'y' это означает, что значения' y' предназначены для одного значения частоты. Его как скорость графика против времени, где скорость (м/с), а время - 's'. – Rashid