对MatLab中xcorr内函数的解释

vojdkbi0  于 2022-11-15  发布在  Matlab
关注(0)|答案(1)|浏览(222)

在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大小是否有缺点(导致错误)?

ttygqcqt

ttygqcqt1#

此部分用于获取最接近2*m的整数,可以以以下形式写入:

以下任一项:
1.m已经是这种形式,则循环

for p = [2 3 5 7]
         while (r > 1) && (mod(r, p) == 0)
             r = r / p;
         end
 end

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))

相关问题