This commit is contained in:
PinkR1ver 2024-04-17 10:23:44 +08:00
parent 0c10a07567
commit abb6ec507a
5 changed files with 45 additions and 3 deletions

View File

@ -8,5 +8,5 @@ date: 2024-03-25
* https://www.icecet.com/
* http://www.icbibe.org/
* http://www.icbeps.org/
* https://www.icbbe.com/
* https://www.icbbe.cICom/
* https://www.ssip.org/

View File

@ -217,6 +217,11 @@ $$
其傅里叶变换始终大于0
# Application
* [Period Detection by Autocorrelation](signal_processing/advanced_statistic/autocorrelation/period_detection.md)
# Reference
* https://pinkr1ver.notion.site/Autocorrelation-Analysis-Power-Spectral-Density-330755770347472989062c6b31f18a21?pvs=4

View File

@ -0,0 +1,38 @@
---
title: Period Detection by Autocorrelation
tags:
- signal
- signal-processing
---
$$
R_x(n,n+m) = E\{x(n)x(n+m)\}=\lim_{N\rightarrow\infty}\frac{1}{N}\sum_{k=1}^{N}x_k(n)x_k(n+m)
$$
$m=0$ 的时候肯定是autocorrelation最大的时候即自己与自己最为相关
在$m \not = 0$的时候,在$m = \text{Period}$的时候,会得到第二大的值,即移动一个周期后做相关。
# Demo Code
```matlab
for i = 1:length(signal_list) - 1
name = strsplit(matFiles(i).name, '.');
name = name{1};
[autocor, lag] = xcorr(signal_list{i}, 200);
figure;
plot(lag, autocor, 'LineWidth', 1);
xlabel('Lag');
ylabel('Auto-correlation');
title(['Auto-correlation for ', name]);
grid on;
grid minor;
[~, max_idx] = max(autocor);
disp(max_idx);
freq = 1 / (max_idx * 1 / fs);
disp(freq)
fprintf('Signal %s freq: %f\n', name, freq);
end
```

View File

@ -45,8 +45,7 @@ date: 2024-03-18
## Autocorrelation
* [Autocorrelation in Signal Processing](signal_processing/advanced_statistic/autocorrelation/autocorrelation.md)
* [Autocorrelation to Detect Period](signal_processing/advanced_statistic/autocorrelation/period_detect.md)
* [Period Detection by Autocorrelation](signal_processing/advanced_statistic/autocorrelation/period_detection.md)
# Software
## CST MWS