2014-10-15 1 views
0

У меня есть простой сигнал синуса с некоторым шумом. Если я попробую простой алгоритм БПФ, я получаю амплитуду сигнала (23) и частоты (2). Если я попробую перемычку из Matlab с окном hanning, я получаю правильную частоту, но амплитуда неправильная. Как получить реальную амплитуду? Это код, я использую для pwelch:правильная амплитуда pwelch fft

time = 0:0.01:50; 
frequency = 2; 
amplitude = 23; 
y = amplitude * sin (2 * pi * frequency * time); 
y= y + 6 * randn(size(time)); 
y = y - mean(y); 
N = length(y); 
Fs = 100; 
NFFT = 2^nextpow2(N); 
M = 4396; 
w = hanning(M); 
[Pyy,Fy] = pwelch(y, w,[],M,Fs); 
plot(Fy,Pyy); 

ответ

1

ИМХО, вы не можете из-за spectral leakage. Если вы видите окно Hanning, которое вы используете, это фильтр нижних частот (при центрировании и нормализации). Это уменьшит мощность на основных частотах, и оно будет вводить мощность на других частотах, то есть сглаживание. Но это апериодический сигнал с бесконечной продолжительностью в частотной области, который невозможно вычислить.

figure; 
plot(w); 
title(['Hanning window with ', num2str(M), 'points']); 

enter image description here

Вы можете прочитать больше here.

+0

но как я могу применить окно hann к сигналу и получить правильную амплитуду и правильную частоту? серию окон hans и перекрывают их и делают среднее значение fft – Razvan

 Смежные вопросы

  • Нет связанных вопросов^_^