dsp.IFFT

Обратное дискретное преобразование Фурье (IDFT)

Описание

The dsp.IFFT Система object™ вычисляет обратное дискретное преобразование Фурье (IDFT) входа. Объект использует один или несколько следующих алгоритмов быстрого преобразования Фурье (FFT) в зависимости от сложности входного сигнала и от того, находится ли вывод в линейном или обратном порядке:

  • Сигнал double

  • Алгоритм половинной длины

  • Radix-2 алгоритм децимирования во времени (DIT)

  • Radix-2 алгоритм децимирования в частоте (DIF)

  • Алгоритм, выбранный из FFTW [1], [2]

Чтобы вычислить ОБПФ входа:

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

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

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

Создание

Описание

ift = dsp.IFFT возвращает IFFT объект, ift, который вычисляет IDFT вектора-столбца или N массива -D. Для векторов-столбцов или N-D массивов IFFT объект вычисляет IDFT вдоль первой размерности массива. Если вход является вектором-строкой, IFFT объект вычисляет строку IDFT с одной выборкой и выдает предупреждение.

пример

ift = dsp.IFFT(Name,Value) возвращает IFFT объект, ift, с каждым набором свойств на заданное значение. Заключайте каждое имя свойства в одинарные кавычки. Неопределенные свойства имеют значения по умолчанию.

Свойства

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

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

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

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

Задайте реализацию, используемую для БПФ, как Auto, Radix-2, или FFTW. Когда вы устанавливаете это свойство на Radix-2, длина БПФ должна быть степенью двойки.

Установите это свойство на true если порядок преобразованных элементов входа Фурье в IFFT объект находится в обратном битовом порядке. Значение по умолчанию является false, что обозначает линейное упорядоченное расположение.

Зависимости

Это свойство применяется только когда FFTLengthSource свойство Auto.

Установите это свойство на true если вход сопряжен симметрично, чтобы получить реальные выходы. Дискретное преобразование Фурье действительной ценной последовательности является сопряженным симметричным и устанавливает это свойство на true оптимизирует метод расчета IDFT. Установка значения свойства false для сопряженных симметричных входов это может привести к комплексному выходу значений с ненулевыми мнимыми частями. Это происходит из-за ошибок округления. Установка значения свойства true для несопряженных симметричных входов приводит к недопустимым выходам.

Зависимости

Это свойство применяется только когда FFTLengthSource свойство Auto.

Укажите, нужно ли делить вывод ОБПФ на длину БПФ. Значение по умолчанию является true и каждый элемент выхода делится на длину БПФ.

Задайте, как определить длину БПФ как Auto или Property. Когда вы устанавливаете это свойство на Autoдлина БПФ равняется количеству строк входного сигнала.

Зависимости

Это свойство применяется только тогда, когда оба BitReversedInput и ConjugateSymmetricInput свойства false.

Задайте длину БПФ как целое число, больше или равное 2.

Это свойство должно быть степенью двойки, если применяется любое из следующих условий:

  • Входной вход является типом данных с фиксированной точкой.

  • Свойство FFTImplementation Radix-2.

Зависимости

Это свойство применяется, когда вы устанавливаете BitReversedInput и ConjugateSymmetricInput свойства для false, и FFTLengthSource свойство к 'Property'.

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

Перенос входных данных при FFTLength короче входной длины. Если для этого свойства задано значение true, то перед операцией FFT происходит перенос данных по модулю FFTLength короче, чем длина входа. Если для этого свойства задано значение false, усечение входных данных в FFTLength происходит перед операцией БПФ.

Свойства с фиксированной точкой

Задайте метод округления.

Задайте действие переполнения следующим Wrap или Saturate.

Задайте тип данных синусоидальной таблицы следующим Same word length as input или Custom.

Задайте тип фиксированной точки синусоидальной таблицы как не масштабированный numerictype (Fixed-Point Designer) объект с Signedness от Auto.

Зависимости

Это свойство применяется, когда вы устанавливаете SineTableDataType свойство к Custom.

Укажите тип данных продукта следующим Full precision, Same as input, или Custom.

Укажите тип фиксированной точки продукта как масштабированный numerictype (Fixed-Point Designer) объект с Signedness от Auto.

Зависимости

Это свойство применяется, когда вы устанавливаете ProductDataType свойство к Custom.

Укажите тип данных аккумулятора следующим Full precision, Same as input, Same as product, или Custom.

Задайте тип фиксированной точки аккумулятора как масштабированный numerictype (Fixed-Point Designer) объект с Signedness от Auto.

Зависимости

Это свойство применяется, когда вы устанавливаете AccumulatorDataType свойство к Custom.

Задайте тип выходных данных следующим Full precision, Same as input, или Custom.

Задайте тип данных с фиксированной точкой на выходе как масштабированный numerictype (Fixed-Point Designer) объект с Signedness от Auto.

Зависимости

Это свойство применяется, когда вы устанавливаете OutputDataType свойство к Custom.

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

Синтаксис

Описание

пример

y = ift(x) вычисляет обратное дискретное преобразование Фурье (IDFT), y, из входа x по первой размерности x.

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

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

Вход данных, заданный как вектор, матрица или N -D массив.

Когда FFTLengthSource свойство Auto, длина x по первой размерности должна быть положительная целочисленная степень двойки. Когда FFTLengthSource свойство 'Property', длина x по первой размерности может быть любое положительное целое число и FFTLength свойство должно быть положительной целочисленной степенью двойки.

Входные сигналы переменного размера поддерживаются только тогда, когда FFTLengthSource для свойства задано значение 'Auto'.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fi
Поддержка комплексного числа: Да

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

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

Обратное дискретное преобразование Фурье входного сигнала, возвращаемое в виде вектора, матрицы или N-D массива.

Когда FFTLengthSource для свойства задано значение 'Auto'длина БПФ совпадает с количеством строк в входном сигнале. Когда FFTLengthSource для свойства задано значение 'Property', длина БПФ задается через FFTLength свойство.

Типы данных: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fi
Поддержка комплексного числа: Да

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

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

release(obj)

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

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

Примеры

свернуть все

Вычислите БПФ зашумленного синусоидального входного сигнала. Энергия сигнала сохранена как квадрат величины коэффициентов БПФ. Определите коэффициенты БПФ, которые занимают 99,99% энергии сигнала, и восстановите сигнал временной области, взяв ОБПФ этих коэффициентов. Сравните восстановленный сигнал с исходным сигналом.

Note: Если вы используете R2016a или более ранний релиз, замените каждый вызов объекта на эквивалентный step синтаксис. Для примера, obj(x) становится step(obj(x)).

Рассмотрим сигнал временной области x[n], который определяется в течение конечного временного интервала 0nN-1. Энергия сигнала x[n] задается следующим уравнением:

EN=n=0N-1|x[n]|2

Коэффициенты БПФ, X[k], рассматриваются значения сигналов в частотный диапазон. Энергия сигнала x[n] в частотном диапазоне поэтому является суммой квадратов величины коэффициентов БПФ:

EN=1Nk=0N-1|X[k]|2

Согласно теореме Парсеваля, общая энергия сигнала во временной или частотной областях одинаковая.

EN=n=0N-1|x[n]|2=1Nk=0N-1|X[k]|2

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

Инициализируйте dsp.SineWave Системный объект для генерации синусоиды, дискретизированной с частотой 44,1 кГц и имеющей частоту 1000 Гц. Создайте dsp.FFT и dsp.IFFT объекты для вычисления БПФ и IFFT входного сигнала.

The 'FFTLengthSource' свойство каждого из этих объектов преобразования установлено в 'Auto'. Длина БПФ, следовательно, рассматривается как размер входного кадра. Размер входного кадра в этом примере равен 1020, что не является степенью 2, поэтому выберите 'FFTImplementation' как 'FFTW'.

L = 1020;
Sineobject = dsp.SineWave('SamplesPerFrame',L,'PhaseOffset',10,...
    'SampleRate',44100,'Frequency',1000);
ft = dsp.FFT('FFTImplementation','FFTW');
ift = dsp.IFFT('FFTImplementation','FFTW','ConjugateSymmetricInput',true);
rng(1);

Вытекание

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

numIter = 1000;
for Iter = 1:numIter
    Sinewave1 = Sineobject();
    Input = Sinewave1 + 0.01*randn(size(Sinewave1));
    FFTCoeff = ft(Input);
    FFTCoeffMagSq = abs(FFTCoeff).^2;
    
    EnergyFreqDomain = (1/L)*sum(FFTCoeffMagSq);
    [FFTCoeffSorted, ind] = sort(((1/L)*FFTCoeffMagSq),1,'descend');
    
    CumFFTCoeffs = cumsum(FFTCoeffSorted);
    EnergyPercent = (CumFFTCoeffs/EnergyFreqDomain)*100;
    Vec = find(EnergyPercent > 99.99);
    FFTCoeffsModified = zeros(L,1);
    FFTCoeffsModified(ind(1:Vec(1))) = FFTCoeff(ind(1:Vec(1)));
    ReconstrSignal = ift(FFTCoeffsModified);
end

99,99% энергии сигнала может быть представлено количеством коэффициентов БПФ, заданных Vec(1):

Vec(1)
ans = 296

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

max(abs(Input-ReconstrSignal))
ans = 0.0431
plot(Input,'*');
hold on;
plot(ReconstrSignal,'o');
hold off;

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

Алгоритмы

Этот объект реализует алгоритм, входы и выходы, описанные на IFFT блочных страниц с описанием. Свойства объекта соответствуют параметрам блоков, за исключением того, что параметр Output sampling mode не поддерживается dsp.IFFT.

Ссылки

[2] Frigo, M. and S. G. Johnson, «FFTW: An Adaptive Software Architecture for БПФ», Труды Международной конференции по акустике, речи и обработке сигналов, Vol. 3, 1998, pp. 1381-1384.

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

.

См. также

Объекты

Введенный в R2012a