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 которого напоминает частотную характеристику полосно-пропускающей конечной импульсной характеристики 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] Phinyomark, Angkoon, Sirinee Thongpanja, Huosheng Hu, Pornchai Phukpattaranont и Chusak Limsakul. «Полезность средних и медианных частот в электромиографическом анализе». В Computational Intelligence in Electromiograph Analysis - A Perspective on Current Applications and Future Challenges, под редакцией Ганеша Р. Наика. InTech, 2012. https://doi.org/10.5772/50639.

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

Генерация кода C/C + +
Сгенерируйте код C и C++ с помощью Coder™ MATLAB ®

.

См. также

| | | |

Введенный в R2015a
Для просмотра документации необходимо авторизоваться на сайте