exponenta event banner

Обнаружение искаженного сигнала в шуме

Наличие шума часто затрудняет определение спектрального содержания сигнала. Частотный анализ может помочь в таких случаях.

Рассмотрим, например, моделируемый выход нелинейного усилителя, который вносит искажение третьего порядка.

Входной сигнал представляет собой синусоиду с единичной амплитудой 180 Гц, дискретизированную на частоте 3,6 кГц. Создайте 10000 проб.

N = 1e4;
n = 0:N-1;
fs = 3600;
f0 = 180;
t = n/fs;
y = sin(2*pi*f0*t);

Добавьте белый шум единичной дисперсии на вход. Моделирование усилителя с помощью многочлена третьего порядка. Пропускать входной сигнал через усилитель с помощью polyval. Постройте график раздела выходных данных. Для сравнительного графика выход чистой синусоиды.

rng default
noise = randn(size(y));

dispol = [0.5 0.75 1 0];
out = polyval(dispol,y+noise);

ns = 300:500; 

plot(t(ns),[out(ns);polyval(dispol,y(ns))])
xlabel('Time (s)')
ylabel('Signals')
axis tight
legend('With white noise','No white noise')

Figure contains an axes. The axes contains 2 objects of type line. These objects represent With white noise, No white noise.

Использовать pwelch для вычисления и построения графика спектральной плотности мощности выходного сигнала.

[pxx,f] = pwelch(out,[],[],[],fs);

pwelch(out,[],[],[],fs)

Figure contains an axes. The axes with title Welch Power Spectral Density Estimate contains an object of type line.

Поскольку усилитель вносит искажение третьего порядка, ожидается, что выходной сигнал будет иметь:

  • компонент постоянного тока (нулевой частоты);

  • Фундаментальная составляющая с той же частотой, что и у входа, 180 Гц;

  • Две гармоники - частотные составляющие на частоте, вдвое и втрое превышающей частоту входа, 360 и 540 Гц.

Убедитесь, что выход соответствует ожидаемой для кубической нелинейности.

[pks,lox] = findpeaks(pxx,'NPeaks',4,'SortStr','descend');

hold on
plot(f(lox)/1000,10*log10(pks),'or')
hold off

legend('PSD','Frequency Components')

Figure contains an axes. The axes with title Welch Power Spectral Density Estimate contains 2 objects of type line. These objects represent PSD, Frequency Components.

components = sort([f(lox) f0*(0:3)'])'
components = 2×4

    0.8789  180.1758  360.3516  540.5273
         0  180.0000  360.0000  540.0000

pwelch работает делением сигнала на перекрывающиеся сегменты, вычислением периодограммы каждого сегмента и усреднением. По умолчанию функция использует восемь сегментов с 50% перекрытием. Для 10000 образцов это соответствует 2222 выборкам на сегмент.

Разделение сигнала на более короткие сегменты приводит к большему усреднению. Периодограмма более гладкая, но имеет более низкое разрешение. Высшую гармонику различить невозможно.

pwelch(out,222,[],[],fs)

Figure contains an axes. The axes with title Welch Power Spectral Density Estimate contains an object of type line.

Разделение сигнала на более длинные сегменты увеличивает разрешение, но также и случайность. Сигнал и гармоники находятся точно в ожидаемых местах. Однако существует по меньшей мере один ложный высокочастотный пик с большей мощностью, чем у более высокой гармоники.

pwelch(out,4444,[],[],fs)

Figure contains an axes. The axes with title Welch Power Spectral Density Estimate contains an object of type line.

См. также

|

Связанные темы