Степень сигнала является суммой абсолютных квадратов его выборок во временной области, разделенных на длину сигнала, или, эквивалентно, квадрат его уровня RMS. Функция 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