medfreq

Синтаксис

freq = medfreq(x)
freq = medfreq(x,fs)
freq = medfreq(pxx,f)
freq = medfreq(sxx,f,rbw)
freq = medfreq(___,freqrange)
[freq,power] = medfreq(___)
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) задает интервал частоты, на котором можно вычислить среднюю частоту, с помощью любого из входных параметров от предыдущих синтаксисов. Значение по умолчанию для 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)

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);

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

medfreq(x+x2,Fs)

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) сигнала. Задайте окно Kaiser с той же длиной как сигнал и форм-фактор 38. Оцените среднюю частоту сигнала и аннотируйте его на графике PSD.

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

medfreq(Pxx,f);

Сгенерируйте другую синусоиду, этого с частотой 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);

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

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

medfreq(Pzz,f);

Сгенерируйте сигнал, 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);

Выведите среднюю частоту и степень полосы интервала измерения. Определение частоты дискретизации 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);

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

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 имеет модули рада/выборки.

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

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

| | | |

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

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