dsp. ZoomFFT

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

Описание

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

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

Вычислить БПФ фрагмента спектра:

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

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

Чтобы узнать больше, как Системные объекты работают, смотрите то, Что Системные объекты? MATLAB.

Создание

Синтаксис

zfft = dsp.ZoomFFT
zfft = dsp.ZoomFFT(d)
zfft = dsp.ZoomFFT(d,Fc)
zfft = dsp.ZoomFFT(d,Fc,Fs)
zfft = dsp.ZoomFFT(Name,Value)

Описание

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

пример

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

пример

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

пример

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

пример

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

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

Свойства

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

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

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

Для получения дополнительной информации об изменении значений свойств смотрите Разработку системы в MATLAB Используя Системные объекты (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)

Описание

пример

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

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

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

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

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

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

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

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

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

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

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

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

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

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

release(obj)

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

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

Примеры

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

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

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

Установите центральную частоту на 2 кГц и пропускную способность интереса для 1 кГц. Пропускная способность сосредоточена на центральной частоте. Фактором десятикратного уменьшения является отношение входной частоты дискретизации, 48 кГц и пропускной способности интереса, 1 кГц. Выберите длину FFT 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);

Частоты

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

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

Генератор синусоиды

Создайте синусоиду с частотами на уровне 1 625 Гц, 2 000 Гц и 2 125 Гц.

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

Потоковая передача

Передайте шумную синусоиду с частотой дискретизации 48 кГц. Вычислите БПФ изменения масштаба этой синусоиды в поддиапазоне [1 500 Гц 2 500 Гц]. Перестройте преобразование Фурье путем сдвига нулевой частотной составляющей к центру массива. Просмотрите тоны на уровне 1 625 Гц, 2 000 Гц и 2 125 Гц в графике массивов.

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 = F2F1, и затем субдискретизируете сигнал фактором D = пол (Fs/BW), желаемая полоса сводится к основной полосе.

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

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

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

Ссылки

[1] Харрис, Обработка сигналов Ф.Дж. Малтирэйта для Систем связи. Prentice Hall, 2004, стр 208–209.

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

Введенный в R2017b