dsp.ZoomFFT

БПФ высокого разрешения фрагмента спектра

Описание

The dsp.ZoomFFT Система object™ вычисляет быстрое Преобразование Фурье (FFT) сигнала на фрагменте частот в интервале Найквиста. Путем установки соответствующих D коэффициента десятикратного уменьшения и Fs частоты дискретизации можно выбрать полосу частот для анализа BW, где BW = Fs/ D. Можно также выбрать определенную область значений частот для анализа в интервале Nyquist, выбрав центральную частоту необходимой полосы .

Разрешение сигнала является отношением Fs и длины БПФ (L). Используя zoom FFT, вы можете сохранить то же разрешение, которое вы достигли бы с полноразмерным БПФ на вашем исходном сигнале, вычисляя небольшой БПФ на более коротком сигнале. Более короткий сигнал приходит от децимирования исходного сигнала. Экономия за счет вычисления гораздо более короткого БПФ при достижении того же разрешения. Для десятикратного уменьшения коэффициента D новая частота дискретизации, Fsd, равна Fs/ D, а новый формат кадра (и длина БПФ) равна Ld = L/ D. Разрешение децимированного сигнала Fsd/ Ld = Fs/ L. Чтобы получить более высокое разрешение более короткой полосы, используйте исходную длину БПФ, L, вместо децимированной длины БПФ, Ld.

Для вычисления БПФ фрагмента спектра:

  1. Создайте dsp.ZoomFFT Объекту и установите его свойства.

  2. Вызывайте объект с аргументами, как будто это функция.

Дополнительные сведения о работе системных объектов см. в разделе «Что такое системные объекты?».

Создание

Описание

zfft = dsp.ZoomFFT создает объект системы БПФ с масштабом, zfft, который выполняет БПФ на фрагменте частотной области значений входного сигнала. Объект определяет частотную область значений, в котором можно выполнить БПФ, используя указанные значения центральной частоты и коэффициента десятикратного уменьшения.

пример

zfft = dsp.ZoomFFT(d) создает объект БПФ масштаба с набором свойств DecimationFactor для d.

пример

zfft = dsp.ZoomFFT(d,Fc) создает объект БПФ масштаба с набором свойств DecimationFactor для d, и CenterFrequency набора свойств для Fc.

пример

zfft = dsp.ZoomFFT(d,Fc,Fs) создает объект БПФ масштаба с набором свойств DecimationFactor для d, CenterFrequency набора свойств для Fc, и SampleRate набора свойств для Fs.

пример

zfft = dsp.ZoomFFT(Name,Value) создает объект БПФ масштаба с каждым заданным набором свойств до заданного значения. Заключайте каждое имя свойства в одинарные кавычки. Можно использовать этот синтаксис с любыми предыдущими комбинациями входных аргументов.

Пример: zfft = dsp.ZoomFFT(2,2e3,48e3,'FFTLength',64);

Свойства

расширить все

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

Если свойство настраивается, можно изменить его значение в любой момент.

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Использование Системных объектов.

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

Пример: 4

Пример: 8

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Центральная частота нужной полосы в Гц, заданная как действительный скаляр в области значений (- SampleRate/2, SampleRate/2).

Пример: 0.5

Пример: 10

Настраиваемый: Да

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

Длина БПФ, заданная как положительное целое число. Длина БПФ должна быть больше или равной отношению формата кадра (количество входа строк) и коэффициента десятикратного уменьшения, L/ D. Значение по умолчанию, [], задает длину БПФ, которая равна отношению, L/ D .

Пример: 24

Пример: 52

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

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

Пример: 44100

Пример: 48000

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

Использование

Синтаксис

Описание

пример

zfftOut = zfft(input) вычисляет масштабирование БПФ входа. Каждый столбец входа рассматривается как независимый канал. Объект вычисляет БПФ каждого канала входного сигнала независимо с течением времени.

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

расширить все

Вход данных, масштабирование которого вычисляется объектом в виде вектора или матрицы. Количество входа строк должно быть кратным коэффициенту десятикратного уменьшения.

Этот объект поддерживает входные сигналы переменного размера, пока размер входного кадра кратен коэффициенту десятикратного уменьшения. То есть вы можете изменить размер входного кадра (количество строк) даже после вызова алгоритма. Однако количество каналов (количество столбцов) должно оставаться постоянным.

Пример: randn(22,2)

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

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

расширить все

Изменение масштаба выхода БПФ, возвращаемое как вектор или матрица. Если для длины БПФ задано значение auto, выхода формата кадра равняется размеру входного кадра, деленному на коэффициент десятикратного уменьшения. Если объект задает длину БПФ, выход формата кадра равняется указанной длине БПФ. Тип выходных данных соответствует типу входных данных.

Пример: randn (11,2)

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

Функции объекта

Чтобы использовать функцию объекта, задайте системный объект в качестве первого входного параметра. Например, чтобы освободить системные ресурсы системного объекта с именем obj, используйте следующий синтаксис:

release(obj)

расширить все

stepЗапуск алгоритма системного объекта
releaseОтпустите ресурсы и допустите изменения в значениях свойств системного объекта и входных характеристиках
resetСброс внутренних состояний Системного объекта

Примеры

свернуть все

Вычислите БПФ поддиапазона [1500 Гц 2500 Гц], используя БПФ масштаба для сигнала, дискретизированного на частоте 48 кГц.

Инициализация

Установите центральную частоту в 2 кГц, а интересующую пропускную способность в 1 кГц. Полоса пропускания центрирована на центральной частоте. Десятикратное уменьшение является отношением входной частоты выборки, 48 кГц, и интересующей полосы пропускания, 1 кГц. Выберите длину БПФ 64. Установите размер входного кадра в качестве коэффициента десятикратного уменьшения, умноженного на длину БПФ. Создайте dsp.ZoomFFT объект с заданным коэффициентом десятикратного уменьшения, центральной частотой, частотой дискретизации и длиной БПФ.

Fs = 48e3;
CF = 2e3;
BW = 1e3;
D  =  Fs/BW;
fftlen = 64;
L  = D * fftlen;
zfft = dsp.ZoomFFT(D,CF,Fs,'FFTLength',fftlen);

Частоты

БПФ вычисляется по частотам, начиная с 1500 Гц и разнесенным на $ Fs/( D * fftLen) $ Гц отдельно, что является разрешением или минимальной частотой, которая может быть дискриминирована. Количество частот, на которых вычисляется БПФ масштаба, равняется длине БПФ.

Fsd = Fs/D;
F = CF + (Fsd/fftlen)*(0:fftlen-1)-Fsd/2;

Инициализация возможностей

Создайте график массива, чтобы показать частоты в F.

ap = dsp.ArrayPlot('XDataMode','Custom','CustomXData',F,...
    'YLabel','z .* conj(z)','XLabel','Frequency (Hz)','YLimits',[0 1.1e3],...
    'Title',sprintf('Decimation Factor = %d. Center Frequency = %d Hz. Resolution = %f Hz',D, CF,(Fs/D)/fftlen));

Генератор Sine wave

Создайте синусоиду с частотами 1625 Гц, 2000 Гц и 2125 Гц.

tones = [1625 2000 2125];
sine = dsp.SineWave('SampleRate',Fs,'Frequency',tones,'SamplesPerFrame',L);

Вытекание

Пройти шумную синусоиду со скоростью дискретизации 48 кГц. Вычислите масштабирование БПФ этой синусоиды в поддиапазоне [1500 Гц 2500 Гц]. Переставьте преобразование Фурье путем сдвига компонента нулевой частоты к центру массива. Просмотрите тональные сигналы с частотой 1625 Гц, 2000 Гц и 2125 Гц на графике массива.

for i = 1:1000
    x = sum(sine(),2)+1e-1*randn(L,1);
    z = zfft(x);
    z = fftshift(z);
    ap(z.*conj(z));
end

The dsp.ZoomFFT объект принимает входы переменного размера, пока входы являются кратными коэффициенту десятикратного уменьшения. Количество каналов входа не может измениться.

Создайте dsp.ZoomFFT объект с коэффициентом десятикратного уменьшения 4, центральной частотой 2 кГц и входной частотой дискретизации 48 кГц. Передайте случайный вход с 4 * 64 строками и 2 столбцами. Варьируйте количество строк, чтобы 4 * 128 и 4 * 32. Получившиеся длины БПФ составляют 64, 128 и 32, соответственно. Размер выходов [64 2], [128 2] и [32 2], соответственно.

zfft = dsp.ZoomFFT(4,2e3,48e3);
y1 = zfft(randn(4*64,2));
y2 = zfft(randn(4*128,2));
y3 = zfft(randn(4*32,2));

Установите длину БПФ равную 256 и передайте входы переменного размера. Размер всех выходов [256 2].

release(zfft);
zfft.FFTLength = 256;
y4 = zfft(randn(4*64,2));
y5 = zfft(randn(4*128,2));
y6 = zfft(randn(4*32,2));

Алгоритмы

Алгоритм zoom FFT использует полосно-пропускающую фильтрацию перед вычислением БПФ сигнала. Концепция полосовой фильтрации состоит в том, что предположим, что вы заинтересованы в полосе [F1, F2] исходного входного сигнала, дискретизированной со скоростью Fs Гц. Если вы передаете этот сигнал через комплексный (односторонний) полосовой фильтр с центром в Fc = (F1 + F2 )/2, с шириной полосы BW = F2 - F1, а затем понижаете значение сигнала в множителе D = floor (Fs/ BW), необходимый диапазон падает до основной полосы.

Если Fc не может быть выражена в форме k × Fs/ D, где k является целым числом, то сдвинутый, децимированный спектр не центрируется в DC. В этом случае центральная частота преобразуется в Fd.

Fd=Fc(Fs/D)×floor((D×Fc+Fs/2)/Fs)

Комплексный полосовой фильтр получают, сначала разрабатывая прототип lowpass-фильтра, а затем умножая коэффициенты lowpass на комплексную экпоненту. Этот алгоритм использует многократный, многоступенчатый конечная импульсная характеристика в качестве lowpass. Для получения полосно-пропускающего фильтра коэффициенты каждого каскада сдвигаются по частоте. Десятикратное уменьшение является совокупным коэффициентом десятикратного уменьшения каждого этапа. Комплексный полосно-пропускающий фильтр, за которым следует дециматор, реализован с использованием эффективной полифазной структуры. Для получения дополнительной информации о проекте комплексного полосно-пропускающего фильтра из многоступенчатого многоступенчатого прототипа конечной импульсной характеристики фильтра, смотрите БПФ масштабирования и Комплексный полосно-пропускающее Создание фильтра.

Ссылки

[1] Harris, F.J. Multirate Signal Processing for Communication Systems. Prentice Hall, 2004, pp. 208-209.

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

.
Введенный в R2017b