exponenta event banner

dsp. IFFT

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

Описание

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

  • Алгоритм двойного сигнала

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

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

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

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

Для вычисления IFFT входного сигнала:

  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 с использованием системных объектов.

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

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

Зависимости

Это свойство применяется только в том случае, если FFTLengthSource свойство - Auto.

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

Зависимости

Это свойство применяется только в том случае, если FFTLengthSource свойство - Auto.

Укажите, следует ли разделить выходные данные IFFT на длину FFT. Значение по умолчанию: 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 происходит перед операцией FFT.

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

Укажите метод округления.

Укажите действие переполнения как Wrap или Saturate.

Укажите тип данных синусоидальной таблицы как Same word length as input или Custom.

Укажите тип фиксированной точки синусоидальной таблицы как не масштабированный numerictype (Конструктор фиксированных точек) объект с Signedness из Auto.

Зависимости

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

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

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

Зависимости

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

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

Укажите тип фиксированной точки накопителя как масштабированный numerictype (Конструктор фиксированных точек) объект с Signedness из Auto.

Зависимости

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

Укажите тип выходных данных как Full precision, Same as input, или Custom.

Укажите тип выходной фиксированной точки как масштабированный numerictype (Конструктор фиксированных точек) объект с 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
Поддержка комплексного номера: Да

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

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

release(obj)

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

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

Примеры

свернуть все

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

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

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

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

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

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

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

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

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

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

'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% энергии сигнала. Возьмите IFFT этих коэффициентов, чтобы восстановить сигнал временной области.

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. Свойства объекта соответствуют параметрам блока, за исключением того, что параметр режима выборки вывода не поддерживается dsp.IFFT.

Ссылки

[2] Фриго, М. и С. Г. Джонсон, «FFTW: адаптивная архитектура программного обеспечения для FFT», Труды Международной конференции по акустике, речи и обработке сигналов, том 3, 1998, стр. 1381-1384.

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

.

См. также

Объекты

Представлен в R2012a