Exponent of next higher power of 2
P = nextpow2(A)
P = nextpow2( returns the exponents for the
smallest powers of two that satisfy
for each element in
A. By convention,
nextpow2(0) returns zero.
You can use
nextpow2 to pad the signal you pass to
fft. Doing so can speed up the
computation of the FFT when the signal length is not an exact power of 2.
Define a vector of
double integer values and calculate the exponents for the next power of 2 higher than those values.
a = [1 -2 3 -4 5 9 519]; p = nextpow2(a)
p = 1×7 0 1 2 2 3 4 10
Calculate the positive next powers of 2.
np2 = 2.^p
np2 = 1×7 1 2 4 4 8 16 1024
Preserve the sign of the original input values.
ans = 1×7 1 -2 4 -4 8 16 1024
Define a vector of unsigned integers and calculate the exponents for the next power of 2 higher than those values.
a = uint32([1020 4000 32700]); p = nextpow2(a)
p = 1x3 uint32 row vector 10 12 15
Calculate the next powers of 2 higher than the values in
ans = 1x3 uint32 row vector 1024 4096 32768
nextpow2 function to increase the performance of
fft when the length of a signal is not a power of 2.
Create a 1-D vector containing 8191 sample values.
x = gallery('uniformdata',[1,8191],0);
Calculate the next power of 2 higher than 8191.
p = nextpow2(8191); n = 2^p
n = 8192
Pass the signal and the next power of 2 to the
y = fft(x,n);
A— Input values
Input values, specified as a scalar, vector, or array of real numbers of any numeric type.
This function fully supports tall arrays. For more information, see Tall Arrays.
This function fully supports GPU arrays. For more information, see Run MATLAB Functions on a GPU (Parallel Computing Toolbox).
This function fully supports distributed arrays. For more information, see Run MATLAB Functions with Distributed Arrays (Parallel Computing Toolbox).