Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

IFFT

入力の逆フーリエ高速変換 (IFFT)

  • IFFT block

ライブラリ:
DSP System Toolbox / Transforms

説明

IFFT ブロックは、N 次元の入力配列の最初の次元全体において逆高速フーリエ変換 (IFFT) を計算します。ブロックは 2 つの可能な FFT 実装のどちらかを使用します。FFTW ライブラリを基にした実装か、基数 2 のアルゴリズムのコレクションを基にした実装を選択できます。ブロックで実装を選択できるように、[自動] を選択できます。FFT 実装の詳細については、アルゴリズムを参照してください。

入力ベクトル (または入力配列の最初の次元) の長さと同じではない FFT 長を指定すると、ブロックはゼロ パディング、切り捨てまたは M を法とする (FFT 長) データ ラッピングを実装します。これが発生するのは IFFT 演算の前です。P ≤ M の IFFT の場合、次のようになります。

y = ifft(u,M) % P ≤ M

ラッピング:

y(:,L) = ifft(datawrap(u(:,L),M)) % P > M; L = 1,...,N

切り捨て:

y (:,L) = ifft(u,M) % P > M; L = 1,...,N

ヒント

入力の長さ P が FFT 長 M より大きい場合、IFFT 出力での振幅が増加することがあります。振幅が増加するのは、IFFT ブロックが M を法とするデータ ラッピングを使用してすべての使用可能な入力サンプルを保持するためです。

このような振幅の増加を避けるため、入力サンプル P の長さを FFT 長 M まで切り捨てることができます。これを行うには、Pad ブロックをモデル内の IFFT ブロックの前に配置します。

端子

入力

すべて展開する

IFFT を計算する入力信号。ブロックは N 次元の入力信号の最初の次元に沿って IFFT を計算します。入力には浮動小数点または固定小数点、実数または複素数、および共役対称を使用できます。

ブロックが IFFT を計算する方法の詳細については、説明およびアルゴリズムを参照してください。

データ型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | fixed point
複素数のサポート: あり

出力

すべて展開する

IFFT。N 次元の入力配列の最初の次元全体で計算されます。ブロックが IFFT を計算する方法の詳細については、説明およびアルゴリズムを参照してください。

L 番目の出力チャネル y(k,L) の k 番目のエントリは、L 番目の入力チャネルにおける M 点の逆離散フーリエ変換 (IDFT) の k 番目の点と等価です。

y(k,L)=1Mp=1Pu(p,L)ej2π(p1)(k1)/Mk=1,,M

出力の次元は入力と同じです。入力信号のデータ型が浮動小数点である場合、出力信号のデータ型は同じ浮動小数点のデータ型を使用します。そうでない場合、出力はいずれかの符号付き固定小数点のデータ型になります。ブロックは、スケーリングされた IFFT およびスケーリングされていない IFFT を計算します。

データ型: single | double | int8 | int16 | int32 | fixed point

パラメーター

すべて展開する

メイン

このパラメーターを [FFTW] に設定して、任意の長さの入力信号をサポートします。ブロックは、FFTW 実装で生成されたコードを MATLAB® のホスト コンピューターに制限します。

ビット反転した処理、固定小数点データまたは浮動小数点データ、または Simulink® Coder™ を使った移植可能な C コード生成では、このパラメーターを [Radix-2] に設定します。M 行 N 列の入力行列の次元 M は、2 のべき乗でなければなりません。他の入力サイズで操作するには、Pad ブロックを使ってこれらの次元を 2 のべき乗にパディングまたは切り捨てをするか、可能な場合は FFTW 実装を選択します。[Radix-2] モードで使用されるアルゴリズムの詳細については、基数 2 の実装を参照してください。

このパラメーターを [自動] に設定して、ブロックが FFT 実装を選択できるようにします。2 のべき乗でない変換の長さの浮動小数点の場合、FFTW アルゴリズムは自動的に選択されます。それ以外の場合は、Radix-2 アルゴリズムが自動的に選択されます。2 のべき乗でない変換の長さの場合、ブロックは生成したコードを MATLAB のホスト コンピューターに制限します。

このチェック ボックスをオンまたはオフにして、入力チャネル要素の順序を指定します。入力をビット反転順にする場合はこのチェック ボックスをオンにして、入力を線形順にする場合はオフにします。このパラメーターを正しく設定しないと、ブロックの出力は無効になります。

[FFT 長を入力次元から継承] チェック ボックスをオフにして、[FFT 長] パラメーターを使用して FFT 長を指定していると、このチェック ボックスをオンにできません。また、[FFT 実装] パラメーターを [FFTW] に設定するとオンにできません。

出力の順序の詳細については、Linear and Bit-Reversed Output Orderを参照してください。

依存関係

このパラメーターを有効にするには、[FFT 実装][自動] または [Radix-2] に設定します。

ブロックで共役対称データを入力して実数値の出力が必要な場合に、このオプションをオンにします。このチェック ボックスをオンにすると、ブロックの計算方法が最適化されます。

実数値データを入力すると、FFT ブロックの出力は共役対称になります。共役対称の入力行列の IFFT を受け取ると、実数値出力が生成されます。したがって、ブロックへの入力が浮動小数点および共役対称の両方である場合に、このチェック ボックスをオンにすると、ブロックでは実数値出力が生成されます。

[FFT 長を入力次元から継承] チェック ボックスをオフにして、[FFT 長] パラメーターを使用して FFT 長を指定していると、このチェック ボックスをオンにできません。

共役対称データを IFFT ブロックに入力して、このチェック ボックスをオンにしないと、IFFT ブロックは小さな虚数部を持つ複素数値の信号を出力します。非共役対称の入力データを使用する場合にこのオプションをオンにすると、ブロックは無効なデータを出力します。

このチェック ボックスを選択すると、説明の節で説明されているように、ブロックはその出力を IDFT 方程式に従って計算します。

このチェック ボックスをオフにすると、ブロックは次の方程式で定義される、変更した IDFT My(k,l) を使用して出力を計算します。

My(k,l)=p=1Pu(p,l)ej2π(p1)(k1)/Mk=1,...,M

変更した IDFT 方程式には乗算係数 1/M は含まれないことに注意してください。

入力次元から FFT 長を継承する場合に選択します。このパラメーターをオフにする場合、長さを指定する [FFT 長] パラメーターが使用できるようになります。[入力はビット反転順] パラメーターまたは [入力は共役対称] パラメーターのいずれかをオンにすると、このパラメーターをオフにできません。

FFT 長を 2 以上の整数で指定します。

[FFT 実装] パラメーターを Radix-2 に設定する場合または [ビット反転順での出力] チェック ボックスをオンにする場合、この値は 2 のべき乗でなければなりません。

依存関係

このパラメーターを有効にするには、[FFT 長を入力次元から継承] チェック ボックスをオフにします。

FFT 長に応じて入力をラップするか、切り捨てるかを選択します。このパラメーターをオンにすると、FFT 長が入力の長さよりも短い場合、FFT 演算の前に長さを法とするデータ ラッピングが発生します。このパラメーターをオフにすると、FFT 演算の前に入力データが FFT 長に切り捨てられます。

依存関係

このパラメーターを有効にするには、[FFT 長を入力次元から継承] チェック ボックスをオフにします。

データ型

固定小数点演算の丸めモードを選択します。

制限

正弦表の値はこのパラメーターに従わず、常に [最も近い正の整数方向] に丸められます。

[丸めモード] パラメーターは、以下のすべての条件に一致する場合、数値結果には影響しません。

  • [乗算出力] のデータ型が次である。[継承: 内部ルールによる継承]

  • [アキュムレータ] のデータ型が次である。[継承: 内部ルールによる継承]

これらのデータ型設定を使用すると、ブロックは完全精度モードで動作します。

このパラメーターをオンにすると、ブロックは固定小数点演算の結果を飽和させます。このパラメーターをオフにすると、ブロックは固定小数点演算の結果をラップします。saturate および wrap の詳細については、固定小数点演算のオーバーフロー モードを参照してください。

制限

[整数オーバーフローで飽和] のパラメーターは、以下のすべての条件に一致する場合、数値結果には影響しません。

  • [乗算出力] のデータ型が次である。[継承: 内部ルールによる継承]

  • [アキュムレータ] のデータ型が次である。[継承: 内部ルールによる継承]

これらのデータ型設定を使用すると、ブロックは完全精度モードで動作します。

正弦表の値の語長を指定する方法を選択します。正弦表の値の小数部の長さは常に語長から 1 を引いた値に等しくなります。このパラメーターは以下のように設定できます。

  • データ型継承ルール。例: [継承: 入力と同じ語長]

  • 有効なデータ型として評価する式。例: fixdt(1,16)

[データ型アシスタントを表示] ボタン をクリックして、[正弦表] パラメーターの設定を行うための [データ型アシスタント] を表示します。

詳細については、データ型アシスタントを利用したデータ型の指定 (Simulink)を参照してください。

制限

正弦表の値は [丸めモード] パラメーターおよび [整数オーバーフローで飽和] パラメーターには従わず、常に飽和して [最も近い正の整数方向] に丸められます。

乗算出力のデータ型を指定します。このブロックの乗算出力データ型の使い方を示す図は、固定小数点および乗算のデータ型を参照してください。このパラメーターは以下のように設定できます。

  • データ型継承ルール。例: [継承: 内部ルールによる継承]。このルールの詳細については、内部ルールによる継承を参照してください。

  • 有効なデータ型として評価する式。例: fixdt(1,16,0)

[データ型アシスタントを表示] ボタン をクリックして、[乗算出力] パラメーターの設定を行うための [データ型アシスタント] を表示します。

詳細については、データ型アシスタントを利用したデータ型の指定 (Simulink)を参照してください。

アキュムレータのデータ型を指定します。このブロックのアキュムレータ データ型の使い方を示す図は、固定小数点を参照してください。このパラメーターは以下のように設定できます。

  • データ型継承ルール。例: [継承: 内部ルールによる継承]。このルールの詳細については、内部ルールによる継承を参照してください。

  • 有効なデータ型として評価する式。例: fixdt(1,16,0)

[データ型アシスタントを表示] ボタン をクリックして、[アキュムレータ] パラメーターの設定を行うための [データ型アシスタント] を表示します。

詳細については、データ型アシスタントを利用したデータ型の指定 (Simulink)を参照してください。

出力データ型を指定します。このブロックの出力データ型の使い方を示す図は、固定小数点を参照してください。このパラメーターは以下のように設定できます。

  • データ型継承ルール。例: [継承: 内部ルールによる継承]

    [継承: 内部ルールによる継承] を選択すると、ブロックは出力の語長と小数部の長さを自動的に計算します。理想的な出力の語長と小数部の長さを計算するためにブロックが使用する方程式は、[出力を FFT 長で除算] チェック ボックスの設定によって異なります。

    • [出力を FFT 長で除算] チェック ボックスをオンにした場合、理想的な出力の語長と小数部の長さは入力の語長と小数部の長さと同じになります。

    • [出力を FFT 長で除算] チェック ボックスをオフにした場合、ブロックは次の方程式に従って理想的な出力の語長と小数部の長さを計算します。

      WLideal output=WLinput+floor(log2(FFT length1))+1

      FLideal output=FLinput

    これらの理想的な結果を使用して、内部ルールによって、使用しているハードウェアに適した語長と小数部の長さが選択されます。詳細については、内部ルールによる継承を参照してください。

  • 有効なデータ型として評価する式。例: fixdt(1,16,0)

[データ型アシスタントを表示] ボタン をクリックして、[出力] パラメーターの設定を行うための [データ型アシスタント] を表示します。

詳細については、信号のデータ型の制御 (Simulink)を参照してください。

ブロックが出力する最小値を指定します。既定値は [] (指定なし) です。Simulink ソフトウェアは、以下を行う際にこの値を使用します。

  • シミュレーション範囲のチェック (信号範囲の指定 (Simulink)を参照)

  • 固定小数点データ型の自動スケーリング

ブロックが出力する最大値を指定します。既定値は [] (指定なし) です。Simulink ソフトウェアは、以下を行う際にこの値を使用します。

  • シミュレーション範囲のチェック (信号範囲の指定 (Simulink)を参照)

  • 固定小数点データ型の自動スケーリング

ブロック ダイアログ ボックスで指定するデータ型が固定小数点ツールによってオーバーライドされないようにするには、このパラメーターを選択します。

ブロックの特性

データ型

double | fixed point | integer | single

直達

いいえ

多次元信号

はい

可変サイズの信号

はいa

ゼロクロッシング検出

いいえ

a 可変サイズの信号は、[Inherit FFT length from input dimensions] チェックボックスが選択されている場合にのみサポートされます。

アルゴリズム

すべて展開する

参照

[1] Orfanidis, S. J. Introduction to Signal Processing. Upper Saddle River, NJ: Prentice Hall, 1996, p. 497.

[2] Proakis, John G. and Dimitris G. Manolakis. Digital Signal Processing, 3rd ed. Upper Saddle River, NJ: Prentice Hall, 1996.

[4] Frigo, M. and S. G. Johnson, “FFTW: An Adaptive Software Architecture for the FFT,”Proceedings of the International Conference on Acoustics, Speech, and Signal Processing, Vol. 3, 1998, pp. 1381-1384.

拡張機能

バージョン履歴

R2006a より前に導入

参考

オブジェクト

関数

ブロック