nufftn
説明
例
非等間隔サンプル点
各次元で、等間隔でない点 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});
入力引数
X
— 入力配列
ベクトル | 行列 | 多次元配列
入力配列。数値ベクトル、行列または多次元配列として指定します。
データ型: double
| single
| int8
| int16
| int32
| uint8
| uint16
| uint32
| logical
複素数のサポート: あり
t
— サンプル点
ベクトル | 行列 | ベクトルの cell 配列
サンプル点。ベクトル、行列、または入力配列 X
の各次元のベクトルの cell 配列として指定します。
ベクトルまたは行列として指定された場合、t
の行の数は X
の要素の数に等しくなります。クエリ点が指定されない場合、変換は各次元の等間隔の N 個のクエリ点で計算されます。ここで N = ceil(numel(X).^(1/D))
であり、かつ D は t
の列の数です。出力 Y
は各次元の長さ N の D 次元配列です。
t
が D ベクトルの cell 配列として指定される場合、各ベクトルの長さは X
の対応する次元の長さと等しくなければなりません。
データ型: double
| single
f
— クエリ点
ベクトル | 行列 | ベクトルの cell 配列
クエリ点。ベクトル、行列、または入力配列 X
の各次元のベクトルの cell 配列として指定します。行列として指定される場合、f
は M 行 k 列の配列でなければなりません。ここで、k は、サンプル点で定義される次元の数 D 以上です。
f
が D ベクトルの cell 配列として指定される場合、出力 Y
の各次元の長さは、cell 配列内の対応するベクトルの長さと等しくなります。
サンプル点を指定しないで f
を指定するには nufftn(X,[],f)
を使用します。
データ型: double
| single
拡張機能
スレッドベースの環境
MATLAB® の backgroundPool
を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool
を使用してコードを高速化します。
この関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
バージョン履歴
R2020a で導入R2023b: 非等間隔サンプル点またはクエリ点のパフォーマンスがさらに向上
関数 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
を呼び出して時間測定されました。
R2022a: 非等間隔サンプル点またはクエリ点のパフォーマンスが向上
関数 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 コマンド
次の 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)