[英]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 可以寫成:
任何一個:
m
已經是這種形式,然后循環
for p = [2 3 5 7] while (r > 1) && (mod(r, p) == 0) r = r / p; end end
將r
降低到 1 並達到break
。
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.