nufftn
N 次元の非等間隔高速フーリエ変換
説明
例
各次元で、等間隔でない点 t
でサンプリングされた 3 次元信号 X
を作成します。非等間隔高速フーリエ変換 Y
を計算します。
t = [1:10 11:2:29]'; x = t; y = t'; z = reshape(t,[1 1 20]); X = cos(2*pi*0.01*x) + sin(2*pi*0.02*y) + cos(2*pi*0.03*z); Y = nufftn(X,{t,t,t});
入力引数
入力配列。数値ベクトル、行列または多次元配列として指定します。
データ型: double
| single
| int8
| int16
| int32
| uint8
| uint16
| uint32
| logical
複素数のサポート: あり
サンプル点。ベクトル、行列、または入力配列 X
の各次元のベクトルの cell 配列として指定します。
ベクトルまたは行列として指定された場合、t
の行の数は X
の要素の数に等しくなります。クエリ点が指定されない場合、変換は各次元の等間隔の N 個のクエリ点で計算されます。ここで N = ceil(numel(X).^(1/D))
であり、かつ D は t
の列の数です。出力 Y
は各次元の長さ N の D 次元配列です。
t
が D ベクトルの cell 配列として指定される場合、各ベクトルの長さは X
の対応する次元の長さと等しくなければなりません。
データ型: double
| single
クエリ点。ベクトル、行列、または入力配列 X
の各次元のベクトルの cell 配列として指定します。行列として指定される場合、f
は M 行 k 列の配列でなければなりません。ここで、k は、サンプル点で定義される次元の数 D 以上です。
f
が D ベクトルの cell 配列として指定される場合、出力 Y
の各次元の長さは、cell 配列内の対応するベクトルの長さと等しくなります。
サンプル点を指定しないで f
を指定するには nufftn(X,[],f)
を使用します。
データ型: double
| single
拡張機能
この関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
バージョン履歴
R2020a で導入関数 nufftn
を非等間隔サンプル点または非等間隔クエリ点で実行する際のパフォーマンスが向上しました。
たとえば、次のコードでは、非等間隔サンプル点 t
の 262,144 行 3 列の行列を作成し、非等間隔離散フーリエ変換を、64×64×64 配列の各次元に沿って計算しています。このコードは、以前のリリースよりパフォーマンスが約 3.3 倍高速化しました。
function timingSamplePoints rng default t = rand(64^3,3); X = rand(64,64,64); tic Y = nufftn(X,t); toc end
おおよその実行時間は以下のとおりです。
R2023a: 0.40 秒
R2023b: 0.12 秒
コードは、Windows® 10、Intel® Xeon® CPU E5-1650 v4 (3.60 GHz) のテスト システム上で関数 timingSamplePoints
を呼び出して時間測定されました。
もう 1 つの例として、次のコードでは、非等間隔クエリ点 f
の 262,144 行 3 列の行列を作成し、非等間隔離散フーリエ変換を、64×64×64 配列の各次元に沿って計算しています。このコードは、以前のリリースよりパフォーマンスが約 1.6 倍高速化しました。
function timingQueryPoints rng default f = rand(64^3,3); X = rand(64,64,64); tic Y = nufftn(X,[],f); toc end
おおよその実行時間は以下のとおりです。
R2023a: 0.40 秒
R2023b: 0.25 秒
コードは、Windows 10、Intel Xeon CPU E5-1650 v4 (3.60 GHz) のテスト システム上で関数 timingQueryPoints
を呼び出して時間測定されました。
関数 nufftn
を非等間隔サンプル点または非等間隔クエリ点で実行する際のパフォーマンスが向上しました。
たとえば、次のコードは、非等間隔サンプル点 t
の 32768 行 3 列の行列を作成し、32×32×32 配列の各次元に沿った非等間隔離散フーリエ変換を計算します。以前のリリースと比較して処理が約 14.5 倍速くなっています。
function timingSamplePoints rng default t = rand(32^3,3); X = rand(32,32,32); tic; Y = nufftn(X,t); toc end
おおよその実行時間は以下のとおりです。
R2021b: 2.76 秒
R2022a: 0.19 秒
コードは、Windows 10、Intel Xeon CPU E5-1650 v4 (3.60 GHz) のテスト システム上で関数 timingSamplePoints
を呼び出して時間測定されました。
別の例を示します。次のコードは、非等間隔クエリ点 f
の 65536 行 3 列の行列を作成し、64×32×32 配列の各次元に沿った非等間隔離散フーリエ変換を計算します。以前のリリースと比較して処理が約 42.6 倍速くなっています。
function timingQueryPoints rng default f = rand(64*32*32,3); X = rand(64,32,32); tic; Y = nufftn(X,[],f); toc end
おおよその実行時間は以下のとおりです。
R2021b: 4.26 秒
R2022a: 0.10 秒
コードは、Windows 10、Intel Xeon CPU E5-1650 v4 (3.60 GHz) のテスト システム上で関数 timingQueryPoints
を呼び出して時間測定されました。
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- 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)