nufftn
N 维非均匀快速傅里叶变换
说明
示例
输入参数
输入数组,指定为数值向量、矩阵或多维数组。
数据类型: double | single | int8 | int16 | int32 | uint8 | uint16 | uint32 | logical
复数支持: 是
采样点,指定为输入数组 X 的每个维度的向量、矩阵或向量元胞数组。
当指定为向量或矩阵时,t 的行数必须等于 X 中的元素数。当未指定查询点时,将在每个维度中均匀分布的 N 个查询点处计算变换,其中 N = ceil(numel(X).^(1/D)) 且 D 是 t 中的列数。输出 Y 是每个维度中长度为 N 的一个 D 维数组。
当指定 t 为 D 个向量组成的元胞数组时,每个向量的长度必须等于 X 的对应维度的长度。
数据类型: double | single
查询点,指定为与输入数组 X 的每个维度对应的向量、矩阵或向量元胞数组。当指定为矩阵时,f 必须为 M×k 数组,其中 k 大于或等于由采样点定义的维数 D。
当 f 指定为由 D 个向量组成的元胞数组时,输出 Y 的每个维度的长度等于元胞数组中对应向量的长度。
要指定 f 而不指定采样点,请使用 nufftn(X,[],f)。
数据类型: double | single
扩展功能
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
版本历史记录
在 R2020a 中推出nufftn 函数在对非等间距采样点或非等间距查询点执行运算时性能得到了改进。
例如,以下代码构造一个由非均匀采样点构成的 262144×3 矩阵 t,并在一个 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 函数进行计时的。
作为另一个示例,以下代码构造一个由非均匀查询点构成的 262144×3 矩阵 f,并在一个 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 函数在对非等间距采样点或非等间距查询点执行运算时性能得到了改进。
例如,以下代码构造一个由非均匀采样点构成的 32768×3 矩阵 t,并在一个 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 函数进行计时的。
作为另一个示例,以下代码构造一个由非均匀查询点构成的 65536×3 矩阵 f,并在一个 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.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 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)