在xcorr函数中,除了xcorr中的一个名为“findTransformLength”的函数之外,大部分内容都非常简单。
function m = findTransformLength(m)
m = 2*m;
while true
r = m;
for p = [2 3 5 7]
while (r > 1) && (mod(r, p) == 0)
r = r / p;
end
end
if r == 1
break;
end
m = m + 1;
end
在没有评论的情况下,我无法理解这个函数的含义以及p=[2 3 5 7]的意义。为什么会特别提到这些数字?为什么不采用固定的FFT大小呢?采用固定的FFT大小是否有缺点(导致错误)?
1条答案
按热度按时间ttygqcqt1#
此部分用于获取最接近
2*m
的整数,可以以以下形式写入:以下任一项:
1.
m
已经是这种形式,则循环将
r
减为1,将达到break
。1.或者
m
至少有一个其他素因数,而r
不会达到1。你返回到m+1
的查找,依此类推,直到你得到一个正确形式的数字。根据他们这样做的原因,您可以在fft doc上的输入参数部分中看到:
N-变换长度|非负整数标量
转换长度,指定为[]或非负整数标量。为变换长度指定正整数标量可以提高FFT的性能。长度通常指定为2的幂或可以分解为小*素数的乘积的值。如果n小于信号的长度,则FFT忽略超过第n个条目的剩余信号值,并返回截断结果。如果n为0,则FFT返回一个空矩阵。
示例:n=2^nextPower 2(大小(X,1))