Мощность сигнала - это сумма абсолютных квадратов его отсчетов во временной области, деленная на длину сигнала, или, что эквивалентно, квадрат его среднеквадратичного уровня. Функция bandpower позволяет оценить мощность сигнала за один шаг.
Рассмотрим единичную чирпу, встроенную в белый гауссов шум и отобранную на частоте 1 кГц в течение 1,2 секунды. Частота чирпа увеличивается за одну секунду с начального значения 100 Гц до 300 Гц. Шум имеет дисперсию . Сбросьте генератор случайных чисел для воспроизводимых результатов.
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
bandpower | pow2db | pwelch | snr