簡體   English   中英

MATLAB 中 xcorr 內 function 的說明

[英]Explanation for a function within xcorr in MATLAB

在 xcorr function 中查看,大部分都非常簡單,除了 xcorr 中的一個 function 稱為“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

沒有評論,我不明白這個 function 的目的是什么以及 p = [2 3 5 7] 的意義是什么。 為什么是這些數字? 為什么不采用固定的 FFT 大小呢? 采用固定的 FFT 大小是否有缺點(導致錯誤)?

這部分用於獲取最接近2*m的 integer 可以寫成:

在此處輸入圖像描述

任何一個:

  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。你 go 用m+1等返回查看,直到你達到一個正確的形式。

根據他們這樣做的原因,您可以在fft doc的 Input arguments 部分中看到:

n - 變換長度 [] (默認) | 非負 integer 標量

變換長度,指定為 [] 或非負 integer 標量。 為變換長度指定一個正的 integer 標量可以提高 fft 的性能 長度通常指定為 2 的冪或可以分解為小素數乘積的值。 如果 n 小於信號的長度,則 fft 忽略第 n 個條目之后的剩余信號值並返回截斷的結果。 如果 n 為 0,則 fft 返回一個空矩陣。

示例:n = 2^nextpow2(size(X,1))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM