meanfreq

Описание

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

пример

freq = meanfreq(x,fs) оценивает среднюю частоту с точки зрения частоты дискретизации, fs.

пример

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

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

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

пример

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

meanfreq(___) без выходных аргументов строит графики 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) и аннотируйте среднюю частоту.

meanfreq(x,Fs)

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

ans = 7.5032e+04

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

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

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

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

    0.7503    2.4999

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

meanfreq([x x2],Fs);

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

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

meanfreq(x+x2,Fs)

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

ans = 2.1496e+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);

meanfreq(Pxx,f);

Figure contains an axes. The axes with title Mean Frequency Estimate: 100.134 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 = meanfreq(Pyy,f)
y = 1×2
105 ×

    1.0013    2.5732

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

meanfreq(Pyy,f);

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

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

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

meanfreq(Pzz,f);

Figure contains an axes. The axes with title Mean Frequency Estimate: 225.775 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 и аннотируйте среднюю частоту и интервал измерения.

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

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

Вывод средней частоты и мощности полосы интервала измерения. Определение частоты дискретизации 2π эквивалентно оставлению ставки отмененной.

[mnf,power] = meanfreq(d,2*pi,[0.3 0.6]*pi);

fprintf('Mean = %.3f*pi, power = %.1f%% of total \n', ...
    mnf/pi,power/bandpower(d)*100)
Mean = 0.373*pi, power = 75.6% of total 

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

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

Вычислите среднюю частоту сигнала между 0.3π рад/образец и 0.9π рад/образец. Постройте график PSD и аннотируйте среднюю частоту каждого канала и интервал измерения.

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

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

Вывод средней частоты каждого канала. Разделите на π.

mnf = meanfreq(d,[],[0.3 0.9]*pi)/pi
mnf = 1×2

    0.3730    0.6500

Входные параметры

свернуть все

Входной сигнал, заданный как вектор или матрица. Если x является вектором, он рассматривается как один канал. Если x является матрицей, тогда meanfreq вычисляет среднюю частоту каждого столбца 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 является матрицей, тогда meanfreq вычисляет среднюю частоту каждого столбца pxx независимо.

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

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

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

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

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

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

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

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

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

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

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

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

Типы данных: 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