exponenta event banner

pspectrum

Анализ сигналов в частотной и временной областях

Описание

пример

p = pspectrum(x) возвращает спектр мощности x.

  • Если x является вектором или расписанием с вектором данных, то он обрабатывается как один канал.

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

пример

p = pspectrum(x,fs) возвращает спектр мощности вектора или матричного сигнала, дискретизированного со скоростью fs.

пример

p = pspectrum(x,t) возвращает спектр мощности вектора или матричного сигнала, дискретизированного в моменты времени, указанные в t.

p = pspectrum(___,type) определяет вид спектрального анализа, выполняемого функцией. Определить type как 'power', 'spectrogram', или 'persistence'. Этот синтаксис может включать любую комбинацию входных аргументов из предыдущих синтаксисов.

пример

p = pspectrum(___,Name,Value) задает дополнительные параметры с использованием аргументов пары «имя-значение». Параметры включают пропускную способность частотного разрешения и процентное перекрытие между соседними сегментами.

пример

[p,f] = pspectrum(___) возвращает частоты, соответствующие спектральным оценкам, содержащимся в p.

пример

[p,f,t] = pspectrum(___,'spectrogram') также возвращает вектор моментов времени, соответствующих центрам оконных сегментов, используемых для вычисления оценок спектра мощности с коротким временем.

[p,f,pwr] = pspectrum(___,'persistence') также возвращает вектор значений мощности, соответствующих оценкам, содержащимся в спектре стойкости.

пример

pspectrum(___) без выходных аргументов строит спектральную оценку в окне текущего рисунка. Для графика функция преобразует p в дБ с помощью 10 log10 (p).

Примеры

свернуть все

Генерировать 128 выборок двухканальной комплексной синусоиды.

  • Первый канал имеет единичную амплитуду и нормированную синусоидальную частоту δ/4 рад/образец

  • Второй канал имеет амплитуду 1/2 и нормированную частоту δ/2 рад/образец.

Вычислите спектр мощности каждого канала и постройте график его абсолютного значения. Увеличьте частотный диапазон от 0,15pcirad/sample до 0,6δ rad/sample. pspectrum масштабирует спектр таким образом, что, если частотное содержание сигнала находится точно в пределах элемента, его амплитуда в этом элементе является истинной средней мощностью сигнала. Для комплексной экспоненты средняя мощность является квадратом амплитуды. Проверьте путем вычисления дискретного преобразования Фурье сигнала. Дополнительные сведения см. в разделе Измерение мощности детерминированных периодических сигналов.

N = 128;
x = [1 1/sqrt(2)].*exp(1j*pi./[4;2]*(0:N-1)).';

[p,f] = pspectrum(x);

plot(f/pi,abs(p))
hold on
stem(0:2/N:2-1/N,abs(fft(x)/N).^2)
hold off
axis([0.15 0.6 0 1.1])
legend("Channel 1, pspectrum","Channel 2, pspectrum", ...
    "Channel 1, fft","Channel 2, fft")
grid

Figure contains an axes. The axes contains 4 objects of type line, stem. These objects represent Channel 1, pspectrum, Channel 2, pspectrum, Channel 1, fft, Channel 2, fft.

Создайте синусоидальный сигнал, дискретизированный на частоте 1 кГц в течение 296 миллисекунд и встроенный в белый гауссов шум. Задайте частоту синусоиды 200 Гц и дисперсию шума 0,1 ². Сохраните сигнал и его временную информацию в расписании MATLAB ®.

Fs = 1000;
t = (0:1/Fs:0.296)';
x = cos(2*pi*t*200)+0.1*randn(size(t));
xTable = timetable(seconds(t),x);

Вычислите спектр мощности сигнала. Выразите спектр в децибелах и постройте его график.

[pxx,f] = pspectrum(xTable);

plot(f,pow2db(pxx))
grid on
xlabel('Frequency (Hz)')
ylabel('Power Spectrum (dB)')
title('Default Frequency Resolution')

Figure contains an axes. The axes with title Default Frequency Resolution contains an object of type line.

Повторно вычислите спектр мощности синусоиды, но теперь используйте более грубое частотное разрешение 25 Гц. Постройте график спектра с помощью pspectrum без выходных аргументов.

pspectrum(xTable,'FrequencyResolution',25)

Figure contains an axes. The axes with title Fres = 25 Hz contains an object of type line.

Генерируйте два сигнала, каждый из которых дискретизируется при частоте 3 кГц в течение 1 секунды. Первый сигнал представляет собой выпуклую квадратичную чирпу, частота которой увеличивается от 300 Гц до 1300 Гц во время измерения. Чирп встроен в белый гауссов шум. Второй сигнал, также встроенный в белый шум, представляет собой чирп с синусоидально изменяющимся частотным содержанием.

fs = 3000;
t = 0:1/fs:1-1/fs;

x1 = chirp(t,300,t(end),1300,'quadratic',0,'convex') + ...
    randn(size(t))/100;

x2 = exp(2j*pi*100*cos(2*pi*2*t)) + randn(size(t))/100;

Вычислите и постройте график двустороннего спектра мощности первого сигнала с использованием прямоугольного окна. Для реальных сигналов, pspectrum по умолчанию отображает односторонний спектр. Чтобы построить двусторонний спектр, установите TwoSided к true.

pspectrum(x1,fs,'Leakage',1,'TwoSided',true)

Figure contains an axes. The axes with title Fres = 2.9304 Hz contains an object of type line.

Вычислите спектрограмму второго сигнала. Для сложных сигналов спектрограмма по умолчанию является двусторонней. Отображение спектрограммы в виде графика водопада.

[p,f,t] = pspectrum(x2,fs,'spectrogram');

waterfall(f,t,p');
xlabel('Frequency (Hz)')
ylabel('Time (seconds)')
wtf = gca;
wtf.XDir = 'reverse';
view([30 45])

Figure contains an axes. The axes contains an object of type patch.

Генерация двухканального сигнала с частотой 100 Гц в течение 2 секунд.

  1. Первый канал состоит из тонального сигнала 20 Гц и тонального сигнала 21 Гц. Оба тона имеют единичную амплитуду.

  2. Второй канал также имеет два тона. Один тон имеет единичную амплитуду и частоту 20 Гц. Другой тон имеет амплитуду 1/100 и частоту 30 Гц.

fs = 100;
t = (0:1/fs:2-1/fs)';

x = sin(2*pi*[20 20].*t) + [1 1/100].*sin(2*pi*[21 30].*t);

Встроить сигнал в белый шум. Задайте отношение сигнал/шум 40 дБ. Постройте график сигналов.

x = x + randn(size(x)).*std(x)/db2mag(40);

plot(t,x)

Figure contains an axes. The axes contains 2 objects of type line.

Вычислите спектры двух каналов и выведите их на экран.

pspectrum(x,t)

Figure contains an axes. The axes with title Fres = 1.2898 Hz contains 2 objects of type line.

Значение по умолчанию для спектральной утечки 0,5 соответствует разрешающей полосе около 1,29 Гц. Два тона в первом канале не разрешены. Тон 30 Гц во втором канале виден, несмотря на то, что он намного слабее другого.

Увеличьте утечку до 0,85, что эквивалентно разрешению около 0,74 Гц. Слабый тон во втором канале хорошо виден.

pspectrum(x,t,'Leakage',0.85)

Figure contains an axes. The axes with title Fres = 737.8446 mHz contains 2 objects of type line.

Увеличьте утечку до максимального значения. Пропускная способность разрешения составляет приблизительно 0,5 Гц. Два тона в первом канале разрешены. Слабый тон во втором канале маскируется большими боковыми обтекателями окна.

pspectrum(x,t,'Leakage',1)

Figure contains an axes. The axes with title Fres = 502.5146 mHz contains 2 objects of type line.

Визуализация интерференционного узкополосного сигнала, встроенного в широкополосный сигнал.

Генерируют чирп, отобранный при частоте 1 кГц, в течение 500 секунд. Частота чирпа увеличивается от 180 Гц до 220 Гц во время измерения.

fs = 1000;
t = (0:1/fs:500)';

x = chirp(t,180,t(end),220) + 0.15*randn(size(t));

Сигнал также содержит синусоиду 210 Гц. Синусоида имеет амплитуду 0,05 и присутствует только в течение 1/6 общей длительности сигнала.

idx = floor(length(x)/6);
x(1:idx) = x(1:idx) + 0.05*cos(2*pi*t(1:idx)*210);

Вычислите спектрограмму сигнала. Ограничьте диапазон частот от 100 Гц до 290 Гц. Укажите разрешение по времени, равное 1 секунде. Оба компонента сигнала видны.

pspectrum(x,fs,'spectrogram', ...
    'FrequencyLimits',[100 290],'TimeResolution',1)

Figure contains an axes. The axes with title Fres = 3.9101 Hz, Tres = 1 s contains an object of type image.

Вычислите спектр мощности сигнала. Слабая синусоида затемнена чирпом.

pspectrum(x,fs,'FrequencyLimits',[100 290])

Figure contains an axes. The axes with title Fres = 976.801 mHz contains an object of type line.

Вычислите спектр стойкости сигнала. Теперь хорошо видны обе составляющие сигнала.

pspectrum(x,fs,'persistence', ...
    'FrequencyLimits',[100 290],'TimeResolution',1)

Figure contains an axes. The axes with title Fres = 3.9101 Hz, Tres = 1 s contains an object of type image.

Создайте квадратичную чирп-схему с частотой 1 кГц в течение 2 секунд. Чирп имеет начальную частоту 100 Гц, которая увеличивается до 200 Гц при t = 1 секунда. Вычислите спектрограмму, используя настройки по умолчанию pspectrum функция.

fs = 1e3;
t = 0:1/fs:2;
y = chirp(t,100,1,200,'quadratic');

[sp,fp,tp] = pspectrum(y,fs,'spectrogram');

mesh(tp,fp,sp)
view(-15,60)
xlabel('Time (s)')
ylabel('Frequency (Hz)')

Figure contains an axes. The axes contains an object of type surface.

Вычислите переназначенную спектрограмму. Задайте разрешение по частоте 10 Гц. Визуализация результата с помощью pspectrum без выходных аргументов.

pspectrum(y,fs,'spectrogram','FrequencyResolution',10,'Reassign',true)

Figure contains an axes. The axes with title Fres = 10.0263 Hz, Tres = 256 ms contains an object of type image.

Повторно вычислите спектрограмму, используя временное разрешение 0,2 секунды.

pspectrum(y,fs,'spectrogram','TimeResolution',0.2)

Figure contains an axes. The axes with title Fres = 12.8337 Hz, Tres = 200 ms contains an object of type image.

Вычислите переназначенную спектрограмму с тем же временным разрешением.

pspectrum(y,fs,'spectrogram','TimeResolution',0.2,'Reassign',true)

Figure contains an axes. The axes with title Fres = 12.8337 Hz, Tres = 200 ms contains an object of type image.

Создайте сигнал с частотой 4 кГц, напоминающий нажатие всех клавиш цифрового телефона. Сохраните сигнал в расписании MATLAB ®.

fs = 4e3;
t = 0:1/fs:0.5-1/fs;

ver = [697 770 852 941];
hor = [1209 1336 1477];

tones = [];

for k = 1:length(ver)
    for l = 1:length(hor)
        tone = sum(sin(2*pi*[ver(k);hor(l)].*t))';
        tones = [tones;tone;zeros(size(tone))];
    end
end

% To hear, type soundsc(tones,fs)

S = timetable(seconds(0:length(tones)-1)'/fs,tones);

Вычислите спектрограмму сигнала. Задайте разрешение по времени 0,5 секунды и нулевое перекрытие между соседними сегментами. Укажите утечку как 0,85, что приблизительно эквивалентно окну данных с окном Ганна.

pspectrum(S,'spectrogram', ...
    'TimeResolution',0.5,'OverlapPercent',0,'Leakage',0.85)

Figure contains an axes. The axes with title Fres = 15.6403 Hz, Tres = 500 ms contains an object of type image.

Спектрограмма показывает, что каждая клавиша нажимается на полсекунды, с полуторасекундными паузами между клавишами. Первый тон имеет частотное содержание, сконцентрированное около 697 Гц и 1209 Гц, соответствующее цифре '1' в стандарте DTMF.

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

свернуть все

Входной сигнал, заданный как вектор, матрица или MATLAB ®timetable.

  • Если x является расписанием, то оно должно содержать возрастающее конечное время строки.

    Примечание

    Если расписание имеет отсутствующие или повторяющиеся моменты времени, его можно исправить с помощью подсказок в «Чистом расписании» с «Отсутствующим», «Повторяющимся» или «Неуниформным временем».

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

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

1100 < Среднее время  intervalСредний интервал времени < 100.

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

Пример: timetable(seconds(0:4)',rand(5,2)) задает двухканальную случайную величину, дискретизированную с частотой 1 Гц в течение 4 секунд.

Пример: timetable(seconds(0:4)',rand(5,1),rand(5,1)) задает двухканальную случайную величину, дискретизированную с частотой 1 Гц в течение 4 секунд.

Типы данных: single | double
Поддержка комплексного номера: Да

Частота выборки, заданная как положительный числовой скаляр.

Значения времени, указанные как вектор, a datetime или duration массив или duration скаляр, представляющий временной интервал между выборками.

Пример: seconds(0:1/100:1) является duration матрица, представляющая 1 секунду выборки при частоте 100 Гц.

Пример: seconds(1) является duration скаляр, представляющий 1-секундную разность времени между последовательными выборками сигнала.

Тип вычисляемого спектра, указанный как 'power', 'spectrogram', или 'persistence':

  • 'power' - Вычислить спектр мощности входа. Эта опция используется для анализа частотного содержания стационарного сигнала. Дополнительные сведения см. в разделе Расчет спектра.

  • 'spectrogram' - Вычислить спектрограмму входного сигнала. Эта опция используется для анализа изменения частотного содержания сигнала во времени. Дополнительные сведения см. в разделе Расчет спектрограммы.

  • 'persistence' - Вычислить спектр мощности стойкости входного сигнала. Эта опция используется для визуализации доли времени, в течение которой определенная частотная составляющая присутствует в сигнале. Дополнительные сведения см. в разделе Расчет спектра стойкости.

Примечание

'spectrogram' и 'persistence' опции не поддерживают многоканальный ввод.

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: 'Leakage',1,'Reassigned',true,'MinThreshold',-35 окошивает данные, используя прямоугольное окно, вычисляет переназначенную оценку спектра и устанавливает нулевое значение для всех значений, меньших -35 дБ.

Пределы полосы частот, определяемые как разделенная запятыми пара, состоящая из 'FrequencyLimits' и двухэлементный числовой вектор:

  • Если вход содержит временную информацию, то полоса частот выражается в Гц.

  • Если вход не содержит временной информации, то полоса частот выражается в нормированных единицах рад/выборки.

По умолчанию pspectrum вычисляет спектр по всему диапазону Найквиста:

  • Если указанная полоса частот содержит область, которая выходит за пределы диапазона Найквиста, то pspectrum усечение полосы частот.

  • Если указанная полоса частот находится полностью за пределами диапазона Найквиста, то pspectrum выдает ошибку.

Дополнительные сведения о диапазоне Найквиста см. в разделе Расчет спектра.

Если x неравномерно дискретизируется, затем pspectrum линейно интерполирует сигнал в однородную сетку и определяет эффективную частоту дискретизации, равную обратной медиане разностей между соседними временными точками. Экспресс 'FrequencyLimits' с точки зрения эффективной частоты выборки.

Пример: [0.2*pi 0.7*pi] вычисляет спектр сигнала без временной информации от 0,2π к 0,7π рад/образец.

Полоса пропускания частотного разрешения, заданная как разделенная запятыми пара, состоящая из 'FrequencyResolution' и вещественный числовой скаляр, выраженный в Гц, если входной сигнал содержит информацию о времени, или в нормализованных единицах rad/sample, если нет. Этот аргумент не может быть указан одновременно с 'TimeResolution'. Значение по умолчанию этого аргумента зависит от размера входных данных. Дополнительные сведения см. в разделе Расчет спектрограмм.

Пример: pi/100 вычисляет спектр сигнала без временной информации с частотным разрешением π/ 100 рад/образец.

Спектральная утечка, указанная как разделенная запятыми пара, состоящая из 'Leakage' и действительный числовой скаляр между 0 и 1. 'Leakage' управляет затуханием боковины окна Кайзера относительно ширины основного блока, нарушая между улучшением разрешения и уменьшением утечки:

  • Большое значение утечки разрешает близко расположенные тона, но маскирует близлежащие слабые тона.

  • Небольшое значение утечки находит небольшие тона вблизи более крупных тонов, но размазывает близкие частоты вместе.

Пример: 'Leakage',0 уменьшает утечку до минимума за счет спектрального разрешения.

Пример: 'Leakage',0.85 аппроксимирует окно данных с окном Ганна.

Пример: 'Leakage',1 эквивалентно окну данных с прямоугольным окном, максимизируя утечку, но улучшая спектральное разрешение.

Нижняя граница для ненулевых значений, заданная как разделенная запятыми пара, состоящая из 'MinThreshold' и реальный скаляр. pspectrum орудия 'MinThreshold' по-разному на основе значения type аргумент:

  • 'power' или 'spectrogram'pspectrum устанавливает эти элементы p 10 log10 (p) ≤ 'MinThreshold' до нуля. Определить 'MinThreshold' в децибелах.

  • 'persistence'pspectrum устанавливает эти элементы p меньше, чем 'MinThreshold' до нуля. Определить 'MinThreshold' от 0 до 100%.

Количество ячеек мощности для спектра стойкости, определяемого как разделенная запятыми пара, состоящая из 'NumPowerBins' и целое число между 20 и 1024.

Перекрытие между соседними сегментами для спектрограммы или спектра стойкости, определяемого как разделенная запятыми пара, состоящая из 'OverlapPercent' и действительный скаляр в интервале [0, 100). Значение по умолчанию этого аргумента зависит от спектрального окна. Дополнительные сведения см. в разделе Расчет спектрограмм.

Параметр переназначения, заданный как пара, разделенная запятыми, состоящая из 'Reassign' и логическое значение. Если для этой опции установлено значение true, то pspectrum точит локализацию спектральных оценок путем выполнения временной и частотной переназначения. Метод переназначения дает периодограммы и спектрограммы, которые легче читать и интерпретировать. Этот метод переназначает каждую спектральную оценку центру энергии своего бункера вместо геометрического центра бункера. Методика обеспечивает точную локализацию чирпов и импульсов.

Временное разрешение спектрограммы или спектра стойкости, определяемое как разделенная запятыми пара, состоящая из 'TimeResolution' и действительный скаляр, выраженный в секундах, если входной сигнал содержит временную информацию, или в виде целого числа выборок, если нет. Этот аргумент управляет длительностью сегментов, используемых для вычисления спектров мощности короткого времени, которые формируют спектрограмму или оценки спектра стойкости. 'TimeResolution' не может быть указан одновременно с 'FrequencyResolution'. Значение по умолчанию этого аргумента зависит от размера входных данных и, если оно было указано, от разрешения частоты. Дополнительные сведения см. в разделе Расчет спектрограмм.

Двусторонняя спектральная оценка, указанная как разделенная запятыми пара, состоящая из 'TwoSided' и логическое значение.

  • Если этот параметр true, функция вычисляет центрированные, двусторонние оценки спектра по [-δ, δ]. Если входные данные содержат информацию о времени, оценки вычисляются по [-fs/2, fs/2], где fs - эффективная частота дискретизации.

  • Если этот параметр false, функция вычисляет односторонние оценки спектра в диапазоне Найквиста [0, δ]. Если входные данные содержат информацию о времени, то оценки вычисляются по [0, fs/2], где fs - эффективная частота дискретизации. Для сохранения полной мощности функция умножает мощность на 2 на всех частотах, кроме 0 и частоты Найквиста. Эта опция действительна только для реальных сигналов.

Если не указано, 'TwoSided' по умолчанию: false для реальных входных сигналов и true для комплексных входных сигналов.

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

свернуть все

Спектр, возвращаемый как вектор или матрица. Тип и размер спектра зависит от значения type аргумент:

  • 'power'p содержит оценку спектра мощности каждого канала x. В этом случае p имеет размер Nf  × Nch, где Nf - длина f и Nch - количество каналов x. pspectrum масштабирует спектр таким образом, что, если частотное содержание сигнала находится точно в пределах элемента, его амплитуда в этом элементе является истинной средней мощностью сигнала. Например, средняя мощность синусоиды равна половине квадрата амплитуды синусоиды. Дополнительные сведения см. в разделе Измерение мощности детерминированных периодических сигналов.

  • 'spectrogram'p содержит оценку краткосрочного, локализованного во времени спектра мощности x. В этом случае p имеет размер Nf  × Nt, где Nf - длина f и Nt - длина t.

  • 'persistence'p содержит, выраженные в процентах, вероятности того, что сигнал имеет компоненты заданного уровня мощности в заданном местоположении времени и частоты. В этом случае p имеет размер Npwr  × Nf, где Npwr - длина pwr и Nf - длина f.

Частоты спектра, возвращаемые в виде вектора. Если входной сигнал содержит временную информацию, то f содержит частоты, выраженные в Гц. Если входной сигнал не содержит временной информации, то частоты находятся в нормированных единицах рад/выборка.

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

  • Если вход в pspectrum является расписанием, то t имеет тот же формат, что и значения времени входного расписания.

  • Если вход в pspectrum - числовой вектор, дискретизированный в набор моментов времени, заданных цифрой, duration, или datetime массив, затем t имеет тот же тип и формат, что и входные значения времени.

  • Если вход в pspectrum является числовым вектором с заданной разницей во времени между последовательными выборками, то t является duration массив.

Значения мощности спектра стойкости, возвращаемые в виде вектора.

Подробнее

свернуть все

Вычисление спектра

Для вычисления спектров сигналов pspectrum находит компромисс между спектральным разрешением, достижимым со всей длиной сигнала, и ограничениями производительности, которые возникают в результате вычисления больших FFT:

  • Если возможно, функция вычисляет одну измененную периодограмму всего сигнала с помощью окна Кайзера.

  • Если невозможно вычислить одну модифицированную периодограмму за разумное количество времени, функция вычисляет периодограмму Уэлча: Она делит сигнал на перекрывающиеся сегменты, окошивает каждый сегмент, используя окно Кайзера, и усредняет периодограммы сегментов.

Спектральное окно

Любой реальный сигнал может быть измерен только в течение определенного промежутка времени. Этот факт вносит неиглибилируемые эффекты в анализ Фурье, который предполагает, что сигналы являются либо периодическими, либо бесконечно длинными. Спектральное окно, которое присваивает различные веса различным выборкам сигнала, систематически имеет дело с конечными эффектами.

Самый простой способ отображения сигнала состоит в предположении, что он является идентично нулевым вне интервала измерения и что все выборки одинаково значимы. Это «прямоугольное окно» имеет прерывистые прыжки на обоих концах, которые приводят к спектральному звонку. Все другие спектральные окна сужаются на обоих концах для уменьшения этого эффекта путем назначения меньших весов выборкам вблизи краев сигнала.

Процесс оконной обработки всегда предполагает компромисс между противоречивыми целями: улучшением разрешения и уменьшением утечки:

  • Разрешение - это способность точно знать, как распределяется энергия сигнала в частотном пространстве. Анализатор спектра с идеальным разрешением может различать два различных тона (чистые синусоиды), присутствующие в сигнале, независимо от того, насколько близка по частоте. Количественно эта способность относится к ширине основного блока преобразования окна.

  • Утечка - это тот факт, что в конечном сигнале каждая частотная составляющая проецирует содержание энергии на всем частотном диапазоне. Величину утечки в спектре можно измерить по способности обнаруживать слабый тон по шуму при наличии соседнего сильного тона. Количественно эта способность относится к боковому уровню частотного преобразования окна.

  • Спектр нормализуется таким образом, что чистый тон в пределах этой полосы частот, если он идеально центрирован, имеет правильную амплитуду.

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

pspectrum использует окна Kaiser для выполнения оконной обработки. Для окон Кайзера доля энергии сигнала, захваченной мейнлобом, зависит наиболее важно от регулируемого коэффициента формы β. pspectrum использует коэффициенты формы в диапазоне от β = 0, что соответствует прямоугольному окну, до β = 40, где широкий основной слой захватывает по существу всю спектральную энергию, представляемую с двойной точностью. Промежуточное значение β ≈ 6 довольно близко аппроксимирует окно Ганна. Для управления β используйте 'Leakage' пара имя-значение. Если установить 'Leakage' к , то и β связаны по β = 40 (1 - ). Посмотритеkaiser для получения дополнительной информации.

51-точечное окно Ханна и 51-точечное окно Кайзера с β = 5,7 во временной области51-точечное окно Ханна и 51-точечное окно Кайзера с β = 5,7 в частотной области

Выбор параметров и алгоритмов

Для вычисления спектров сигналов pspectrum первоначально определяет пропускную способность разрешения, которая измеряет, насколько близкими могут быть и по-прежнему разрешаться два тона. Пропускная способность разрешения имеет теоретическое значение

Теория RBWtheory = ENBWtmax tmin.

  • tmax  - tmin, длина записи, является длительностью во временной области выбранной области сигнала.

  • ENBW - эквивалентная полоса пропускания шума спектрального окна. Посмотрите enbw для получения дополнительной информации.

    Используйте 'Leakage' пара имя-значение для управления ENBW. Минимальное значение аргумента соответствует окну Кайзера с β = 40. Максимальное значение соответствует окну Кайзера с β = 0.

Однако на практике pspectrum может понизить разрешение. Снижение разрешения позволяет вычислять спектр за разумное количество времени и отображать его с конечным числом пикселей. По этим практическим причинам самая низкая пропускная способность pspectrum может использовать

RBWperformance = 4 × fspan4096 − 1,

где fspan - ширина полосы частот, заданной с помощью 'FrequencyLimits'. Если 'FrequencyLimits' не указан, то pspectrum использует частоту выборки в качестве fspan. Не удается настроить производительность RBW.

Для вычисления спектра сигнала функция выбирает большее из двух значений, называемых целевой пропускной способностью разрешения:

RBW = max (теория RBWtheory, производительность RBWperformance).

  • Если пропускной способностью разрешения является теория RBWtheory, то pspectrum вычисляет одну модифицированную периодограмму для всего сигнала. Функция использует окно Кайзера с коэффициентом формы, управляемым 'Leakage' пара имя-значение. Посмотрите periodogram для получения дополнительной информации.

  • Если пропускная способность разрешения равна RBWperformance, то pspectrum вычисляет периодограмму Welch для сигнала. Функция:

    1. Разделяет сигналы на перекрывающиеся сегменты.

    2. Для каждого сегмента отдельно используется окно Кайзера с заданным коэффициентом формы.

    3. Усредняет периодограммы всех сегментов.

    Процедура Уэлча предназначена для уменьшения дисперсии спектральной оценки путем усреднения различных «реализаций» сигналов, заданных перекрывающимися секциями, и использования окна для удаления избыточных данных. Посмотрите pwelch для получения дополнительной информации.

    • Длина каждого сегмента (или, эквивалентно, окна) вычисляется с помощью

       Длина сегмента = fNyquist × ENBWRBW,

      где fNyquist - частота Nyquist. (Если нет наложения, частота Найквиста составляет половину эффективной частоты выборки, определяемой как обратная медиане различий между соседними временными точками. Диапазон Найквиста равен [0, fNyquist] для реальных сигналов и [-fNyquist, fNyquist] для сложных сигналов.)

    • Длина шага определяется путем корректировки начальной оценки.

      Stride length≡Segment length Перекрытие = Длина сегмента 2 × ENBW − 1,

      так что первое окно начинается точно на первом образце первого сегмента, а последнее окно заканчивается точно на последнем образце последнего сегмента.

Вычисление спектрограммы

Для вычисления зависящего от времени спектра нестационарного сигнала, pspectrum делит сигнал на перекрывающиеся сегменты, окует каждый сегмент окном Кайзера, вычисляет кратковременное преобразование Фурье, а затем конкатенирует преобразования с образованием матрицы.

Нестационарный сигнал - это сигнал, частотное содержание которого изменяется со временем. Спектрограмма нестационарного сигнала является оценкой эволюции во времени его частотного содержания. Чтобы построить спектрограмму нестационарного сигнала, pspectrum выполните следующие действия:

  1. Разделите сигнал на сегменты равной длины. Сегменты должны быть достаточно короткими, чтобы частотное содержание сигнала не изменялось заметно внутри сегмента. Сегменты могут перекрываться или не перекрываться.

  2. Окнайте каждый сегмент и вычислите его спектр, чтобы получить кратковременное преобразование Фурье.

  3. Используйте спектры сегментов для построения спектрограммы:

    • Если вызывается с выходными аргументами, объедините спектры, чтобы сформировать матрицу.

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

Функция может вычислять спектрограмму только для одноканальных сигналов.

Разделить сигнал на сегменты

Чтобы построить спектрограмму, сначала разделите сигнал на возможно перекрывающиеся сегменты. С помощью pspectrum можно управлять длиной сегментов и величиной перекрытия между соседними сегментами с помощью 'TimeResolution' и 'OverlapPercent' аргументы пары имя-значение. Если длина и перекрытие не заданы, функция выбирает длину на основе всей длины сигнала и процента перекрытия, заданного

(1 12 × ENBW 1) × 100,

где ENBW - эквивалентная шумовая полоса спектрального окна. Посмотрите enbw и «Вычисление спектра» для получения дополнительной информации.

Заданное разрешение по времени

  • Если сигнал не имеет временной информации, укажите временное разрешение (длину сегмента) в выборках. Разрешение по времени должно быть целым числом, большим или равным 1, и меньшим или равным длине сигнала.

    Если сигнал содержит временную информацию, укажите временное разрешение в секундах. Функция преобразует результат в число выборок и округляет его до ближайшего целого числа, которое меньше или равно числу, но не меньше 1. Разрешение по времени должно быть меньше или равно длительности сигнала.

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

Разрешение времени по умолчанию

Если разрешение по времени не указано, то pspectrum использует длину всего сигнала для выбора длины сегментов. Функция устанавливает разрешение по времени как N/d ⌉ выборок, где символы ⌈ ⌉ обозначают функцию потолка, N - длину сигнала, а d - делитель, который зависит от N:

Длина сигнала (N)Делитель (d)Длина сегмента
2 образцы - 63 образцы21 образец - 32 образцы
64 образцы - 255 образцы88 образцы - 32 образцы
256 образцы - 2047 образцы832 образцы - 256 образцы
2048 образцы - 4095 образцы16128 образцы - 256 образцы
4096 образцы - 8191 образцы32128 образцы - 256 образцы
8192 образцы - 16383 образцы64128 образцы - 256 образцы
16384 образцы - N образцов128128 образцы - ⌈ Н/ 128⌉ образцы

По-прежнему можно задать перекрытие между соседними сегментами. Задание перекрытия изменяет количество сегментов. Сегменты, выходящие за пределы конечной точки сигнала, заполняются нулями.

Рассмотрим сигнал из семи выборок [s0 s1 s2 s3 s4 s5 s6]. Поскольку ⌈ 7/2 ⌉ = ⌈ 3,5 ⌉ = 4, функция делит сигнал на два сегмента длиной четыре, когда нет перекрытия. Количество сегментов изменяется по мере увеличения перекрытия.

Количество перекрывающихся образцовРезультирующие сегменты
0
s0 s1 s2 s3
            s4 s5 s6 0
1
s0 s1 s2 s3
         s3 s4 s5 s6
2
s0 s1 s2 s3
      s2 s3 s4 s5
            s4 s5 s6 0
3
s0 s1 s2 s3
   s1 s2 s3 s4
      s2 s3 s4 s5
         s3 s4 s5 s6

pspectrum zero-pads сигнал, если последний сегмент выходит за пределы конечной точки сигнала. Функция возвращает tвектор моментов времени, соответствующих центрам сегментов.

Окно «Сегменты и вычислительные спектры»

После pspectrum делит сигнал на перекрывающиеся сегменты, функциональные окна каждого сегмента с окном Кайзера. Коэффициент формы β окна и, следовательно, утечка могут быть отрегулированы с помощью 'Leakage' пара имя-значение. Затем функция вычисляет спектр каждого сегмента и сцепляет спектры с образованием спектрограммной матрицы. Для вычисления спектров сегментов pspectrum следует процедуре, описанной в разделе Вычисление спектра, за исключением того, что нижний предел разрешающей способности равен

RBWperformance = 4 × fspan1024 − 1.

Мощность спектра дисплея

При вызове без выходных аргументов функция отображает мощность кратковременного преобразования Фурье в децибелах, используя цветовую полосу с картой цветов MATLAB по умолчанию. Цветовая полоса содержит полный диапазон мощности спектрограммы.

Вычисление спектра стойкости

Спектр стойкости сигнала представляет собой частотно-временное представление, которое показывает процент времени, в течение которого данная частота присутствует в сигнале. Спектр стойкости представляет собой гистограмму в пространстве энергетических частот. Чем дольше конкретная частота сохраняется в сигнале по мере развития сигнала, тем выше его временной процент и, таким образом, тем ярче или «горячее» его цвет на дисплее. Используйте спектр стойкости для идентификации сигналов, скрытых в других сигналах.

Чтобы вычислить спектр стойкости, pspectrum выполняет следующие шаги:

  1. Вычислите спектрограмму, используя указанную утечку, разрешение по времени и перекрытие. Дополнительные сведения см. в разделе Расчет спектрограмм.

  2. Разбейте значения мощности и частоты на 2-D ячейки. (Используйте 'NumPowerBins' пара «имя-значение» для указания количества ячеек питания.)

  3. Для каждого значения времени вычислите двумерную гистограмму логарифма спектра мощности. Для каждого силового частотного бина, где в этот момент имеется энергия сигнала, увеличивают соответствующий матричный элемент на 1. Суммирование гистограмм для всех значений времени.

  4. Постройте график накопленной гистограммы относительно мощности и частоты с цветом, пропорциональным логарифму отсчетов гистограммы, выраженным в нормированных процентах. Чтобы представить нулевые значения, используйте половину наименьшей возможной величины.

Спектры мощности

Гистограммы

Накопленная гистограмма

Ссылки

[1] Харрис, Фредрик j. «Об использовании Windows для анализа гармоник с дискретным преобразованием Фурье». Процедуры IEEE ®. том 66, январь 1978, стр. 51-83.

[2] Уэлч, Питер Д. «Использование быстрого преобразования Фурье для оценки спектров мощности: метод, основанный на усреднении времени по коротким измененным периодограммам». Транзакции IEEE по аудио и электроакустике. Том 15, июнь 1967, стр. 70-73.

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

.
Представлен в R2017b