exponenta event banner

medfreq

Медианная частота

Описание

freq = medfreq(x) оценивает медианную нормированную частоту, freqспектра мощности сигнала временной области, x.

пример

freq = medfreq(x,fs) оценивает медианную частоту в терминах частоты выборки, fs.

пример

freq = medfreq(pxx,f) возвращает среднюю частоту оценки спектральной плотности мощности (PSD), pxx. Частоты, f, соответствуют оценкам в pxx.

freq = medfreq(sxx,f,rbw) возвращает среднюю частоту оценки спектра мощности, sxx, с пропускной способностью разрешения rbw.

freq = medfreq(___,freqrange) задает интервал частот, по которому вычисляется медианная частота. Этот синтаксис может включать любую комбинацию входных аргументов из предыдущих синтаксисов, если второй входной аргумент либо fs или f. Если второй вход пропускается как пустой, предполагается нормированная частота. Значение по умолчанию для freqrange - вся ширина полосы входного сигнала.

пример

[freq,power] = medfreq(___) также возвращает мощность полосы, power, спектра. При указании freqrange, то power содержит мощность полосы в пределах freqrange.

medfreq(___) без выходных аргументов строит график PSD или спектра мощности и аннотирует медианную частоту.

Примеры

свернуть все

Генерируют 1024 выборки чирпа, дискретизированные на частоте 1024 кГц. Задайте чирп так, чтобы он имел начальную частоту 50 кГц и достигал 100 кГц в конце выборки. Добавьте белый гауссов шум, чтобы отношение сигнал/шум было 40 дБ. Сбросьте генератор случайных чисел для воспроизводимых результатов.

nSamp = 1024;
Fs = 1024e3;
SNR = 40;
rng default

t = (0:nSamp-1)'/Fs;

x = chirp(t,50e3,nSamp/Fs,100e3);
x = x+randn(size(x))*std(x)/db2mag(SNR);

Оцените среднюю частоту чирпа. Постройте график спектральной плотности мощности (PSD) и аннотируйте среднюю частоту.

medfreq(x,Fs)

Figure contains an axes. The axes with title Median Frequency Estimate: 74.998 kHz contains 2 objects of type line.

ans = 7.4998e+04

Создайте еще одну чирп. Укажите начальную частоту 200 кГц, конечную частоту 300 кГц и амплитуду, в два раза превышающую амплитуду первого сигнала. Добавьте белый гауссов шум.

x2 = 2*chirp(t,200e3,nSamp/Fs,300e3);
x2 = x2+randn(size(x2))*std(x2)/db2mag(SNR);

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

y = medfreq([x x2],Fs)
y = 1×2
105 ×

    0.7500    2.4999

Постройте график PSD двух каналов и аннотируйте их медианные частоты.

medfreq([x x2],Fs);

Figure contains an axes. The axes with title Median Frequency Estimate contains 4 objects of type line.

Добавьте два канала для формирования нового сигнала. Постройте график PSD и аннотируйте среднюю частоту.

medfreq(x+x2,Fs)

Figure contains an axes. The axes with title Median Frequency Estimate: 237.563 kHz contains 2 objects of type line.

ans = 2.3756e+05

Генерация 1024 выборок синусоиды 100,123 кГц, отобранных на частоте 1024 кГц. Добавьте белый гауссов шум, чтобы отношение сигнал/шум было 40 дБ. Сбросьте генератор случайных чисел для воспроизводимых результатов.

nSamp = 1024;
Fs = 1024e3;
SNR = 40;
rng default

t = (0:nSamp-1)'/Fs;

x = sin(2*pi*t*100.123e3);
x = x + randn(size(x))*std(x)/db2mag(SNR);

Используйте periodogram функция для вычисления спектральной плотности мощности (PSD) сигнала. Укажите окно Кайзера с той же длиной, что и сигнал, и коэффициентом формы 38. Оцените среднюю частоту сигнала и аннотируйте его на графике PSD.

[Pxx,f] = periodogram(x,kaiser(nSamp,38),[],Fs);

medfreq(Pxx,f);

Figure contains an axes. The axes with title Median Frequency Estimate: 100.117 kHz contains 2 objects of type line.

Генерируйте другую синусоиду, эту с частотой 257,321 кГц и амплитудой, в два раза превышающей амплитуду первой синусоиды. Добавить белый шум.

x2 = 2*sin(2*pi*t*257.321e3);
x2 = x2 + randn(size(x2))*std(x2)/db2mag(SNR);

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

[Pyy,f] = periodogram([x x2],kaiser(nSamp,38),[],Fs);

y = medfreq(Pyy,f)
y = 1×2
105 ×

    1.0012    2.5731

Аннотировать медианные частоты двух каналов на графике PSD.

medfreq(Pyy,f);

Figure contains an axes. The axes with title Median Frequency Estimate contains 4 objects of type line.

Добавьте два канала для формирования нового сигнала. Оцените PSD и аннотируйте среднюю частоту.

[Pzz,f] = periodogram(x+x2,kaiser(nSamp,38),[],Fs);

medfreq(Pzz,f);

Figure contains an axes. The axes with title Median Frequency Estimate: 256.859 kHz contains 2 objects of type line.

Создайте сигнал, PSD которого напоминает частотную характеристику полосового FIR-фильтра 88-го порядка с нормированными частотами отсечения 0.25δ рад/выборка и 0.45δ рад/выборка.

d = fir1(88,[0.25 0.45]);

Вычислите среднюю частоту сигнала между 0,3δ рад/выборка и 0,6δ рад/выборка. Постройте график PSD и аннотируйте среднюю частоту и интервал измерения.

medfreq(d,[],[0.3 0.6]*pi);

Figure contains an axes. The axes with title Median Frequency Estimate: 0.371 \times \pi rad/sample contains 4 objects of type line, patch.

Вывод медианной частоты и мощности диапазона интервала измерения. Задание частоты дискретизации в 2δ эквивалентно тому, чтобы оставить скорость неснятой.

[mdf,power] = medfreq(d,2*pi,[0.3 0.6]*pi);

fprintf('Mean = %.3f*pi, power = %.1f%% of total \n', ...
    mdf/pi,power/bandpower(d)*100)
Mean = 0.371*pi, power = 77.4% of total 

Добавьте второй канал с нормализованными частотами отсечения 0.5δ рад/выборка и 0.8δ рад/выборка и амплитудой, которая равна одной десятой амплитуды первого канала.

d = [d;fir1(88,[0.5 0.8])/10]';

Вычислите среднюю частоту сигнала между 0,3δ рад/выборка и 0,9δ рад/выборка. Постройте график PSD и аннотируйте среднюю частоту каждого канала и интервал измерения.

medfreq(d,[],[0.3 0.9]*pi);

Figure contains an axes. The axes with title Median Frequency Estimate contains 6 objects of type line, patch.

Вывод медианной частоты каждого канала. Делить на δ.

mdf = medfreq(d,[],[0.3 0.9]*pi)/pi
mdf = 1×2

    0.3706    0.6500

Входные аргументы

свернуть все

Входной сигнал, заданный как вектор или матрица. Если x является вектором, он обрабатывается как один канал. Если x является матрицей, то medfreq вычисляет среднюю частоту каждого столбца x независимо. x должен иметь конечное значение.

Пример: cos(pi/4*(0:159))+randn(1,160) - одноканальный строково-векторный сигнал.

Пример: cos(pi./[4;2]*(0:159))'+randn(160,2) является двухканальным сигналом.

Типы данных: single | double

Частота выборки, заданная как положительный действительный скаляр. Частота выборки - это количество выборок в единицу времени. Если время измеряется в секундах, то частота выборки составляет в герцах.

Типы данных: single | double

Спектральная плотность мощности (PSD), заданная как вектор или матрица. Если pxx является матрицей, то medfreq вычисляет среднюю частоту каждого столбца pxx независимо.

Спектральная плотность мощности должна быть выражена в линейных единицах, а не децибелах. Использовать db2pow для преобразования децибел в значения мощности.

Пример: [pxx,f] = periodogram(cos(pi./[4;2]*(0:159))'+randn(160,2)) определяет оценку пародограммы PSD шумной двухканальной синусоиды, дискретизированной при 2δ Гц, и частоты, на которых она вычисляется.

Типы данных: single | double

Частоты, заданные как вектор.

Типы данных: single | double

Оценка спектра мощности, заданная как вектор или матрица. Если sxx является матрицей, то medfreq вычисляет среднюю частоту каждого столбца sxx независимо.

Спектр мощности должен быть выражен в линейных единицах, а не децибелах. Использовать db2pow для преобразования децибел в значения мощности.

Пример: [sxx,w] = periodogram(cos(pi./[4;2]*(0:159))'+randn(160,2),'power') задает оценку спектра мощности периодограммы двухканальной синусоиды, внедренной в белый гауссов шум, и нормированные частоты, на которых она вычисляется.

Типы данных: single | double

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

Типы данных: single | double

Частотный диапазон, определяемый как двухэлементный вектор вещественных значений. Если не указать freqrange, то medfreq использует всю полосу пропускания входного сигнала.

Типы данных: single | double

Выходные аргументы

свернуть все

Медианная частота, заданная как скаляр или вектор.

  • Если вы указываете частоту выборки, то freq имеет те же единицы, что и fs.

  • Если частота выборки не указана, то freq содержит единицы рад/образец.

Мощность полосы, возвращаемая как скаляр или вектор.

Ссылки

[1] Финьомарк, Ангкун, Сирини Тхонгпанджа, Хуошэн Ху, Порнчай Пхукпаттаранонт и Чусак Лимсакул. «Полезность средних и средних частот в анализе электромиографии». В вычислительном интеллекте в анализе электромиографии - перспектива текущих приложений и будущих задач, под редакцией Ганеша Р. Наика. InTech, 2012. https://doi.org/10.5772/50639.

Расширенные возможности

Создание кода C/C + +
Создайте код C и C++ с помощью MATLAB ® Coder™

.

См. также

| | | |

Представлен в R2015a