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 или спектр мощности и аннотирует медианную частоту.

Примеры

свернуть все

Сгенерируйте 1 024 выборки щебета, произведенного на уровне 1 024 кГц. Задайте щебет так, чтобы он имел начальную частоту 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 object. The axes object 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

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

medfreq([x x2],Fs);

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

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

medfreq(x+x2,Fs)

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

ans = 2.3756e+05

Сгенерируйте 1 024 выборки синусоиды на 100,123 кГц, произведенной на уровне 1 024 кГц. Добавьте белый Гауссов шум, таким образом, что отношение сигнал-шум составляет 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 object. The axes object 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

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

medfreq(Pyy,f);

Figure contains an axes object. The axes object 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 object. The axes object 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 object. The axes object with title M e d i a n blank F r e q u e n c y blank E s t i m a t e : blank 0 . 3 7 1 blank times blank pi blank r a d / s a m p l e 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 object. The axes object 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, Хуошэн Ху, Pornchai Phukpattaranont и Chusak Limsakul. "Полноценность Среднего значения и Медианных частот в Анализе Электромиографии". В Вычислительном Интеллекте в Анализе Электромиографии – Взгляд на Текущие Приложения и будущие проблемы, отредактированные Ганешой Р. Нэйком. InTech, 2012. https://doi.org/10.5772/50639.

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

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

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

| | | |

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