dsp.IFFT

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

Описание

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

  • Алгоритм сигнала double

  • Поясной алгоритм

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

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

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

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

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

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

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

Создание

Описание

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

пример

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.

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

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

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

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

Задайте тип данных table синуса как 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 кГц и, имеет частоту 1 000 Гц. Создайте 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% сигнала. Возьмите ОБПФ этих коэффициентов, чтобы восстановить сигнал временной области.

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 object. The axes object contains 2 objects of type line.

Алгоритмы

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

Ссылки

[2] Frigo, M. и С. Г. Джонсон, “FFTW: Адаптивная Программная архитектура для БПФ”, Продолжения Международной конференции по вопросам Акустики, Речи, и Обработки сигналов, Издания 3, 1998, стр 1381-1384.

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

Смотрите также

Объекты

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