exponenta event banner

dsp. ZoomFFT

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

Описание

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

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

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

  1. Создать dsp.ZoomFFT и задайте его свойства.

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

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

Создание

Описание

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

пример

zfft = dsp.ZoomFFT(d) создает объект zoom FFT со свойством DecimationFactor, равным d.

пример

zfft = dsp.ZoomFFT(d,Fc) создает объект zoom FFT со свойством DecimationFactor, равным d, и свойству StartFrequency присвоено значение Fc.

пример

zfft = dsp.ZoomFFT(d,Fc,Fs) создает объект zoom FFT со свойством DecimationFactor, равным d, для свойства StartFrequency установлено значение 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
Поддержка комплексного номера: Да

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

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

release(obj)

развернуть все

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

Примеры

свернуть все

Вычислите БПФ поддиапазона [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));

Генератор синусоидальных волн

Создайте синусоидальную волну с частотами 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

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

Алгоритмы

Алгоритм масштабирования БПФ использует полосовую фильтрацию перед вычислением БПФ сигнала. Концепция полосовой фильтрации заключается в том, что предполагается, что вы заинтересованы в полосе [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)

Комплексный полосовой фильтр получают, сначала проектируя прототип фильтра нижних частот, а затем умножая коэффициенты нижних частот на комплексный экспоненциальный. Этот алгоритм использует многоступенчатый фильтр FIR в качестве прототипа фильтра нижних частот. Для получения полосового фильтра коэффициенты каждого каскада сдвигаются по частоте. Коэффициент прореживания является кумулятивным коэффициентом прореживания каждого этапа. Сложные полосовые фильтры, за которыми следует прореживатель, реализуются с использованием эффективной полифазной структуры. Для получения дополнительной информации о конструкции сложного полосового фильтра из многоступенчатого многоступенчатого фильтра FIR см. Zoom FFT и Complex Bandpass Filter Design.

Ссылки

[1] Харрис, F.J. Многоскоростная обработка сигналов для систем связи. Prentice Hall, 2004, стр. 208-209.

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

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