Main Content

nextpow2

2 的更高次幂的指数

说明

示例

P = nextpow2(A) 返回对 A 中每个元素满足

2p|A|

的最小的 2 的幂的指数。按照惯例,nextpow2(0) 返回零。

您可以使用 nextpow2 填充传递到 fft 的信号。当信号长度并非 2 次幂时,这样做可以加快 FFT 的运算速度。

示例

全部折叠

定义一个 double 整数值向量,并计算下一个 2 次幂大于这些值的指数。

a = [1 -2 3 -4 5 9 519];
p = nextpow2(a)
p = 1×7

     0     1     2     2     3     4    10

计算正的 2 的更高次幂。

np2 = 2.^p
np2 = 1×7

           1           2           4           4           8          16        1024

保留原始输入值的符号。

np2.*sign(a)
ans = 1×7

           1          -2           4          -4           8          16        1024

定义一个无符号整数向量,并计算 2 的更高次幂大于这些值的指数。

a = uint32([1020 4000 32700]);
p = nextpow2(a)
p = 1x3 uint32 row vector

   10   12   15

计算下一个大于 a 中值的 2 次幂。

2.^p
ans = 1x3 uint32 row vector

    1024    4096   32768

当信号长度不等于 2 的幂时,使用 nextpow2 函数可提升 fft 的性能。

创建包含 8191 个样本值的一维向量。

rng default;
x = rand([1,8191]);

计算 2 的更高次幂中大于 8191 的值。

p = nextpow2(8191);
n = 2^p
n = 8192

将信号和 2 的更高次幂传递给 fft 函数。

y = fft(x,n);

输入参数

全部折叠

输入值,指定为由任何数值类型的实数组成的标量、向量、数组、表或时间表。

示例: 15

示例: [-15.123 32.456 63.111]

示例: int16([-15 32 63])

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | table | timetable

扩展功能

C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。

GPU 代码生成
使用 GPU Coder™ 为 NVIDIA® GPU 生成 CUDA® 代码。

版本历史记录

在 R2006a 之前推出

全部展开

另请参阅

| |