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

ライブラリ:
DSP System Toolbox /
Transforms
説明
IFFT ブロックは、N 次元の入力配列の最初の次元全体において逆高速フーリエ変換 (IFFT) を計算します。ブロックは 2 つの可能な FFT 実装のどちらかを使用します。FFTW ライブラリを基にした実装か、基数 2 のアルゴリズムのコレクションを基にした実装を選択できます。ブロックで実装を選択できるように、[Auto]
を選択できます。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 ブロックの前に配置します。
端子
入力
出力
Port_1 — 入力の IFFT
ベクトル | 行列 | N 次元配列
IFFT。N 次元の入力配列の最初の次元全体で計算されます。ブロックが IFFT を計算する方法の詳細については、説明およびアルゴリズムを参照してください。
L 番目の出力チャネル y(k,L) の k 番目のエントリは、L 番目の入力チャネルにおける M 点の逆離散フーリエ変換 (IDFT) の k 番目の点と等価です。
出力の次元は入力と同じです。入力信号のデータ型が浮動小数点である場合、出力信号のデータ型は同じ浮動小数点のデータ型を使用します。そうでない場合、出力はいずれかの符号付き固定小数点のデータ型になります。ブロックは、スケーリングされた IFFT およびスケーリングされていない IFFT を計算します。
データ型: single
| double
| int8
| int16
| int32
| fixed point
パラメーター
メイン
FFT implementation — FFT 実装
Auto
(既定値) | Radix-2
| FFTW
このパラメーターを [FFTW]
に設定して、任意の長さの入力信号をサポートします。ブロックは、FFTW 実装で生成されたコードを MATLAB® のホスト コンピューターに制限します。
ビット反転した処理、固定小数点データまたは浮動小数点データ、または Simulink® Coder™ を使った移植可能な C コード生成では、このパラメーターを [Radix-2]
に設定します。M 行 N 列の入力行列の次元 M は、2 のべき乗でなければなりません。他の入力サイズで操作するには、Pad ブロックを使ってこれらの次元を 2 のべき乗にパディングまたは切り捨てをするか、可能な場合は FFTW 実装を選択します。[Radix-2]
モードで使用されるアルゴリズムの詳細については、基数 2 の実装を参照してください。
このパラメーターを [Auto]
に設定して、ブロックが FFT 実装を選択できるようにします。2 のべき乗でない変換の長さの浮動小数点の場合、FFTW アルゴリズムは自動的に選択されます。それ以外の場合は、Radix-2 アルゴリズムが自動的に選択されます。2 のべき乗でない変換の長さの場合、ブロックは生成したコードを MATLAB のホスト コンピューターに制限します。
Input is in bit-reversed order — Input is in bit-reversed order
off
(既定値) | on
このチェック ボックスをオンまたはオフにして、入力チャネル要素の順序を指定します。入力をビット反転順にする場合はこのチェック ボックスをオンにして、入力を線形順にする場合はオフにします。このパラメーターを正しく設定しないと、ブロックの出力は無効になります。
[Inherit FFT length from input dimensions] チェック ボックスをオフにして、[FFT length] パラメーターを使用して FFT 長を指定していると、このチェック ボックスをオンにできません。また、[FFT implementation] パラメーターを [FFTW]
に設定するとオンにできません。
出力の順序の詳細については、Linear and Bit-Reversed Output Orderを参照してください。
依存関係
このパラメーターを有効にするには、[FFT implementation] を [Auto]
または [Radix-2]
に設定します。
Input is conjugate symmetric — Input is conjugate symmetric
off
(既定値) | on
ブロックで共役対称データを入力して実数値の出力が必要な場合に、このオプションをオンにします。このチェック ボックスをオンにすると、ブロックの計算方法が最適化されます。
実数値データを入力すると、FFT ブロックの出力は共役対称になります。共役対称の入力行列の IFFT を受け取ると、実数値出力が生成されます。したがって、ブロックへの入力が浮動小数点および共役対称の両方である場合に、このチェック ボックスをオンにすると、ブロックでは実数値出力が生成されます。
[Inherit FFT length from input dimensions] チェック ボックスをオフにして、[FFT length] パラメーターを使用して FFT 長を指定していると、このチェック ボックスをオンにできません。
共役対称データを IFFT ブロックに入力して、このチェック ボックスをオンにしないと、IFFT ブロックは小さな虚数部を持つ複素数値の信号を出力します。非共役対称の入力データを使用する場合にこのオプションをオンにすると、ブロックは無効なデータを出力します。
Divide output by FFT length — Divide output by FFT length
on
(既定値) | off
このチェック ボックスを選択すると、説明の節で説明されているように、ブロックはその出力を IDFT 方程式に従って計算します。
このチェック ボックスをオフにすると、ブロックは次の方程式で定義される、変更した IDFT を使用して出力を計算します。
変更した IDFT 方程式には乗算係数 1/M は含まれないことに注意してください。
Inherit FFT length from input dimensions — Inherit FFT length from input dimensions
on
(既定値) | off
入力次元から FFT 長を継承する場合に選択します。このパラメーターをオフにする場合、長さを指定する [FFT length] パラメーターが使用できるようになります。[Input is in bit-reversed order] パラメーターまたは [Input is conjugate symmetric] パラメーターのいずれかをオンにすると、このパラメーターをオフにできません。
FFT length — FFT length
64
(既定値) | 整数
FFT 長を 2 以上の整数で指定します。
[FFT implementation] パラメーターを Radix-2
に設定する場合または [Output in bit-reversed order] チェック ボックスをオンにする場合、この値は 2 のべき乗でなければなりません。
依存関係
このパラメーターを有効にするには、[Inherit FFT length from input dimensions] チェック ボックスをオフにします。
Wrap input data when FFT length is shorter than input length — 入力のラップまた切り捨て
on
(既定値) | off
FFT 長に応じて入力をラップするか、切り捨てるかを選択します。このパラメーターをオンにすると、FFT 長が入力の長さよりも短い場合、FFT 演算の前に長さを法とするデータ ラッピングが発生します。このパラメーターをオフにすると、FFT 演算の前に入力データが FFT 長に切り捨てられます。
依存関係
このパラメーターを有効にするには、[Inherit FFT length from input dimensions] チェック ボックスをオフにします。
データ型
丸めモード — 丸め方法
Floor
(既定値) | Ceiling
| Convergent
| Nearest
| Round
| Simplest
| Zero
固定小数点演算の丸めモードを選択します。
制限
正弦表の値はこのパラメーターに従わず、常に [Nearest]
に丸められます。
[丸めモード] パラメーターは、以下のすべての条件に一致する場合、数値結果には影響しません。
[乗算出力] のデータ型が次である。
[Inherit: Inherit via internal rule]
。[アキュムレータ] のデータ型が次である。
[Inherit: Inherit via internal rule]
。
これらのデータ型設定を使用すると、ブロックは完全精度モードで動作します。
整数オーバーフローで飽和 — 整数オーバーフローで飽和
off
(既定値) | on
このパラメーターをオンにすると、ブロックは固定小数点演算の結果を飽和させます。このパラメーターをオフにすると、ブロックは固定小数点演算の結果をラップします。saturate
および wrap
の詳細については、固定小数点演算のオーバーフロー モードを参照してください。
制限
[整数オーバーフローで飽和] のパラメーターは、以下のすべての条件に一致する場合、数値結果には影響しません。
[乗算出力] のデータ型が次である。
[Inherit: Inherit via internal rule]
。[アキュムレータ] のデータ型が次である。
[Inherit: Inherit via internal rule]
。
これらのデータ型設定を使用すると、ブロックは完全精度モードで動作します。
正弦表 — 正弦表の値のデータ型
Inherit: Same word length as input
(既定値) | fixdt(1,16)
正弦表の値の語長を指定する方法を選択します。正弦表の値の小数部の長さは常に語長から 1 を引いた値に等しくなります。このパラメーターは以下のように設定できます。
データ型継承ルール。例:
[Inherit: Same word length as input]
有効なデータ型として評価する式。例:
fixdt(1,16)
[データ型アシスタントを表示] ボタン をクリックして、[正弦表] パラメーターの設定を行うための [データ型アシスタント] を表示します。
詳細は、データ型アシスタントを利用したデータ型の指定 (Simulink)を参照してください。
制限
正弦表の値は [丸めモード] パラメーターおよび [整数オーバーフローで飽和] パラメーターには従わず、常に飽和して [Nearest]
に丸められます。
乗算出力 — 乗算出力のデータ型
Inherit: Inherit via internal rule
(既定値) | Inherit: Same as input
| fixdt(1,16,0)
乗算出力のデータ型を指定します。このブロックの乗算出力データ型の使い方を示す図は、固定小数点および乗算のデータ型を参照してください。このパラメーターは以下のように設定できます。
データ型継承ルール。例:
[Inherit: Inherit via internal rule]
。このルールの詳細は、内部ルールによる継承を参照してください。有効なデータ型として評価する式。例:
fixdt(1,16,0)
[データ型アシスタントを表示] ボタン をクリックして、[乗算出力] パラメーターの設定を行うための [データ型アシスタント] を表示します。
詳細は、データ型アシスタントを利用したデータ型の指定 (Simulink)を参照してください。
アキュムレータ — アキュムレータのデータ型
Inherit: Inherit via internal rule
(既定値) | Inherit: Same as input
| Inherit: Same as product output
| fixdt(1,16,0)
アキュムレータのデータ型を指定します。このブロックのアキュムレータ データ型の使い方を示す図は、固定小数点を参照してください。このパラメーターは以下のように設定できます。
データ型継承ルール。例:
[Inherit: Inherit via internal rule]
。このルールの詳細は、内部ルールによる継承を参照してください。有効なデータ型として評価する式。例:
fixdt(1,16,0)
[データ型アシスタントを表示] ボタン をクリックして、[アキュムレータ] パラメーターの設定を行うための [データ型アシスタント] を表示します。
詳細は、データ型アシスタントを利用したデータ型の指定 (Simulink)を参照してください。
出力 — 出力データ型
Inherit: Inherit via internal rule
(既定値) | Inherit: Same as input
| fixdt(1,16,0)
出力データ型を指定します。このブロックの出力データ型の使い方を示す図は、固定小数点を参照してください。このパラメーターは以下のように設定できます。
データ型継承ルール。例:
[Inherit: Inherit via internal rule]
。[Inherit: Inherit via internal rule]
を選択すると、ブロックは出力の語長と小数部の長さを自動的に計算します。理想的な出力の語長と小数部の長さを計算するためにブロックが使用する方程式は、[Divide output by FFT length] チェック ボックスの設定によって異なります。[Divide output by FFT length] チェック ボックスをオンにした場合、理想的な出力の語長と小数部の長さは入力の語長と小数部の長さと同じになります。
[Divide output by FFT length] チェック ボックスをオフにした場合、ブロックは次の方程式に従って理想的な出力の語長と小数部の長さを計算します。
これらの理想的な結果を使用して、内部ルールによって、使用しているハードウェアに適した語長と小数部の長さが選択されます。詳細は、内部ルールによる継承を参照してください。
有効なデータ型として評価する式。例:
fixdt(1,16,0)
[データ型アシスタントを表示] ボタン をクリックして、[出力] パラメーターの設定を行うための [データ型アシスタント] を表示します。
詳細は、信号のデータ型の制御 (Simulink)を参照してください。
出力の [最小値] — ブロックが出力しなければならない最小値
[]
(既定値) | スカラー
ブロックが出力する最小値を指定します。既定値は []
(指定なし) です。Simulink ソフトウェアは、以下を行う際にこの値を使用します。
シミュレーション範囲のチェック (信号範囲の指定 (Simulink)を参照)
固定小数点データ型の自動スケーリング
出力の [最大値] — ブロックが出力しなければならない最大値
[]
(既定値) | スカラー
ブロックが出力する最大値を指定します。既定値は []
(指定なし) です。Simulink ソフトウェアは、以下を行う際にこの値を使用します。
シミュレーション範囲のチェック (信号範囲の指定 (Simulink)を参照)
固定小数点データ型の自動スケーリング
固定小数点ツールによる変更に対してデータ型の設定をロックする — 固定小数点ツールによるデータ型のオーバーライドの回避
off
(既定値) | on
ブロック ダイアログ ボックスで指定するデータ型が固定小数点ツールによってオーバーライドされないようにするには、このパラメーターを選択します。
ブロックの特性
アルゴリズム
FFTW 実装
FFTW 実装は、シミュレーションとコード生成の両方で、2 のべき乗および 2 のべき乗でない変換の長さのサポートを含む、最適化された FFT 計算を提供します。FFTW 実装を使用して生成されたコードは MATLAB のホスト コンピューターに制限されます。データ型は浮動小数点でなければなりません。コードの生成の詳細については、Simulink Coder を参照してください。
基数 2 の実装
基数 2 の実装は、ビット反転した処理や固定小数点データまたは浮動小数点データをサポートし、ブロックで Simulink Coder を使用した移植可能な C コードを生成できるようにします。M 行 N 列の入力行列の次元 M は、2 のべき乗でなければなりません。他の入力サイズで操作するには、Pad ブロックを使ってこれらの次元を 2 のべき乗にパディングまたは切り捨てをするか、可能な場合は FFTW 実装を選択します。
基数 2 を選択すると、ブロックは次のアルゴリズムの 1 つ以上を実装します。
バタフライ演算
double 信号のアルゴリズム
半分長のアルゴリズム
基数 2 の時間間引き (DIT) アルゴリズム
基数 2 の周波数間引き (DIF) アルゴリズム
パラメーター設定 | IFFT 計算に使用するアルゴリズム |
---|---|
| ビット反転演算と基数 2 の DIT |
| 基数 2 の DIT |
| 半分長および double 信号のアルゴリズムを併用した、ビット反転演算と基数 2 の DIT |
| 半分長および double 信号のアルゴリズムを併用した基数 2 の DIT |
特定の状況では、ブロックの基数 2 のアルゴリズムは回転因子のすべての可能な三角関数値を計算します。
ここで、K は M か N のいずれか大きい方の値であり、また です。ブロックはこれらの値をテーブルに格納し、シミュレーション中に取得します。固定小数点と浮動小数点のテーブル エントリ数は、次の表にまとめられています。
N 点 FFT のテーブル エントリ数 | |
---|---|
浮動小数点 | 3N/4 |
固定小数点 | N |
参照
[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.
[3] FFTW (https://www.fftw.org
)
[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.
拡張機能
C/C++ コード生成
Simulink® Coder™ を使用して C および C++ コードを生成します。
使用上の注意および制限:
次の条件に該当する場合、このブロックから生成される実行可能ファイルは、MATLAB に付属のプリビルドされたダイナミック ライブラリ ファイル (
.dll
ファイル) に依存します。[FFT implementation] が
[FFTW]
に設定されている。[Inherit FFT length from input dimensions] がオフで、[FFT length] が 2 のべき乗でない値に設定されている。
このブロックから生成されたコードとすべての関連ファイルを zip 圧縮ファイルにパッケージ化するには、関数
packNGo
を使用します。この zip ファイルを使用して、MATLAB がインストールされていない他の開発環境にプロジェクトを移動して解凍し、リビルドすることができます。詳細は、How To Run a Generated Executable Outside MATLABを参照してください。FFT 長が 2 のべき乗の場合は、このブロックからスタンドアロンの C コードおよび C++ コードを生成できます。
固定小数点の変換
Fixed-Point Designer™ を使用して固定小数点システムの設計とシミュレーションを行います。
次の図は、IFFT ブロック内で固定小数点信号に使用されるデータ型を示します。パラメーターで説明されているように、IFFT ブロック ダイアログ ボックスの図に表示される正弦表、アキュムレータ、乗算出力および出力データ型を設定できます。
IFFT ブロックは、まず入力を出力データ型にキャストしてからそれを出力バッファーに格納します。各バタフライ段階の後、アキュムレータ データ型で信号が処理され、バタフライの最終出力が出力データ型にキャストし直されます。ブロックは、時間間引き IFFT での各バタフライ段階の前と、周波数間引き IFFT での各バタフライ段階の後で、回転因数で乗算されます。
乗算器への入力は両方とも複素数であるため、乗算器の出力はアキュムレータ データ型です。実行される複素数の乗算の詳細については、乗算のデータ型を参照してください。
メモ
ブロックの入力が固定小数点の場合、すべての内部データ型は符号付き固定小数点になります。
バージョン履歴
R2006a より前に導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)