Оценка амплитуды и нулевое заполнение

Этот пример показывает, как использовать нулевое заполнение для получения точной оценки амплитуды синусоидального сигнала. Частоты в дискретном преобразовании Фурье (DFT) разнесены через интервалы Fs/N, где Fs - частота дискретизации и N - длина входных временных рядов. Попытка оценить амплитуду синусоиды с частотой, которая не соответствует интервалу ДПФ, может привести к неточной оценке. Нулевое заполнение данных перед вычислением ДПФ часто помогает улучшить точность оценок амплитуды.

Создайте сигнал, состоящий из двух синусоид. Две синусоиды имеют частоты 100 и 202,5 Гц. Частота дискретизации составляет 1000 Гц, и сигнал составляет 1000 выборки в длину.

Fs = 1e3;
t = 0:0.001:1-0.001;
x = cos(2*pi*100*t)+sin(2*pi*202.5*t);

Получите ДПФ сигнала. Интервалы бункеров ДПФ расположены на частоте 1 Гц. Соответственно, синусоида 100 Гц соответствует интервалу ДПФ, но синусоида 202,5 Гц не соответствует.

Поскольку сигнал является реальным, используйте только положительные частоты от ДПФ, чтобы оценить амплитуду. Масштабируйте ДПФ на длину входного сигнала и умножайте все частоты, кроме 0, и Nyquist на 2.

Постройте график результата с известными амплитудами для сравнения.

xdft = fft(x);
xdft = xdft(1:length(x)/2+1);
xdft = xdft/length(x);
xdft(2:end-1) = 2*xdft(2:end-1);
freq = 0:Fs/length(x):Fs/2;

plot(freq,abs(xdft))
hold on
plot(freq,ones(length(x)/2+1,1),'LineWidth',2)
xlabel('Hz')
ylabel('Amplitude')
hold off

Figure contains an axes. The axes contains 2 objects of type line.

Оценка амплитуды на 100 Гц является точной, потому что эта частота соответствует интервалу ДПФ. Однако оценка амплитуды на 202,5 Гц не является точной, поскольку эта частота не соответствует интервалу ДПФ.

Можно интерполировать ДПФ нулевым заполнением. Заполнение нуля позволяет вам получить более точные оценки амплитуды разрешимых компонентов сигнала. С другой стороны, заполнение нулями не улучшает спектральное (частотное) разрешение ДПФ. Разрешение определяется количеством выборок и частотой дискретизации.

Дополните ДПФ до 2000 года, или в два раза больше исходной длины x. При такой длине интервал между интервалами ДПФ Fs/2000=0.5Hz. В этом случае энергия от синусоиды 202,5 Гц падает непосредственно в интервале ДПФ. Получите ДПФ и постройте график оценок амплитуды. Используйте нулевое заполнение к 2000 выборкам.

lpad = 2*length(x);
xdft = fft(x,lpad);
xdft = xdft(1:lpad/2+1);
xdft = xdft/length(x);
xdft(2:end-1) = 2*xdft(2:end-1);
freq = 0:Fs/lpad:Fs/2;

plot(freq,abs(xdft))
hold on
plot(freq,ones(2*length(x)/2+1,1),'LineWidth',2)
xlabel('Hz')
ylabel('Amplitude')
hold off

Figure contains an axes. The axes contains 2 objects of type line.

Использование нулевого заполнения позволяет вам правильно оценить амплитуды обеих частот.

См. также