Измерьте степень сигнала

Степень сигнала является суммой абсолютных квадратов ее выборок временного интервала, разделенных на длину сигнала, или, эквивалентно, квадрат ее уровня RMS. Функциональный bandpower позволяет вам оценивать степень сигнала за один шаг.

Считайте модульный щебет встроенным в белый Гауссов шум и произведенным на уровне 1 кГц в течение 1,2 секунд. Частота щебета увеличивается за одну секунду с начального значения 100 Гц к 300 Гц. Шум имеет отклонение 0.012. Сбросьте генератор случайных чисел для восстанавливаемых результатов.

N = 1200;
Fs = 1000;
t = (0:N-1)/Fs;

sigma = 0.01;
rng('default')

s = chirp(t,100,1,300)+sigma*randn(size(t));

Проверьте что оценка степени, данная bandpower эквивалентно определению.

pRMS = rms(s)^2
pRMS = 0.5003
powbp = bandpower(s,Fs,[0 Fs/2])
powbp = 0.5005

Используйте obw функционируйте, чтобы оценить ширину диапазона частот, который содержит 99% степени сигнала, нижних и верхних границ полосы и степени в полосе. Функция также строит оценку спектра и аннотирует занимаемую полосу.

obw(s,Fs);

[wd,lo,hi,power] = obw(s,Fs);
powtot = power/0.99
powtot = 0.5003

Нелинейному усилителю мощности дают синусоиду на 60 Гц, как введено и выводит сигнал с шумом с искажением третьего порядка. Сигнал производится на уровне 3,6 кГц в течение 2 секунд.

Fs = 3600;
t = 0:1/Fs:2-1/Fs;
x = sin(2*pi*60*t);
y = polyval(ones(1,4),x) + randn(size(x));

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

  • Основной компонент с той же частотой как вход, 60 Гц.

  • Две гармоники — частотные составляющие в дважды и три раза частота входа, 120 и 180 Гц.

Используйте thd функция, чтобы визуализировать спектр сигнала. Аннотируйте основной принцип и гармоники.

thd(y,Fs);

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

pwrTot = bandpower(y,Fs,[0 Fs/2]);

Harmonic = {'Fundamental';'First';'Second'};

Freqs = [60 120 180]';

Power = zeros([3 1]);
for k = 1:3
    Power(k) = bandpower(y,Fs,Freqs(k)+[-10 10]);
end

Percent = Power/pwrTot*100;

inDB = pow2db(Power);

T = table(Freqs,Power,Percent,inDB,'RowNames',Harmonic)
T=3×4 table
                   Freqs     Power     Percent     inDB  
                   _____    _______    _______    _______

    Fundamental      60      1.5777    31.788      1.9804
    First           120     0.13141    2.6476     -8.8137
    Second          180     0.04672    0.9413     -13.305

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

| | |

Похожие темы