我有一個模板。我通過對模板進行傅里葉變換的共軛傅里葉逆變換來計算匹配濾波器的脈衝響應。我想使用Matlab中的'filter'命令對我的一個可用EEG通道執行匹配濾波操作。使用濾波器命令,係數'b'是我的脈衝響應?此外,我想實現Matlab代碼來對匹配濾波器的輸出進行閾值檢測以檢測峯值。我可以如何實現?如何實現匹配的過濾器
0
A
回答
3
這裏是你開始做這在頻域,
% A template is given
temp = randn(100,1);
% Create a matched filter based on the template
b = flipud(temp(:));
% For testing the matched filter, create a random signal which
% contains a match for the template at some time index
x = [randn(200,1); temp(:); randn(300,1)];
n = 1:length(x);
% Process the signal with the matched filter
y = filter(b,1,x);
% Set a detection threshold (exmaple used is 90% of template)
thresh = 0.9
% Compute normalizing factor
u = temp.'*temp;
% Find matches
matches = n(y>thresh*u);
% Plot the results
plot(n,y,'b', n(matches), y(matches), 'ro');
% Print the results to the console
display(matches);
正如Andreas在他的回答中提到的那樣,沒有必要進行傅立葉變換。如果你有一個時域模板,那麼它的匹配濾波器就是它本身的時間反轉版本(我通過flipud
獲得)。隨着你的進步,你會發現有很多細微差別待解決。這段代碼工作的很好,因爲我從頭到尾都在控制着它,但是一旦開始使用真實數據,事情就會變得更加複雜。例如,選擇一個合適的閾值將需要一些關於您將使用的數據的知識。
事實上,根據信號的性質等,峯值檢測可能是非常不平凡的任務。在我的情況下,峯值檢測很容易,因爲我的信號與模板完全不相關,除了在中間,我也確切地知道我期待看到的幅度。所有這些假設都過分簡化了我用來演示概念的問題。
2
實際上,這樣做
y = filter(h, 1, x)
與小時impuse響應,x和y的輸入和輸出信號。 匹配濾波器無非是一個與給定信號模式相關的相關器。
它有一個脈衝響應,它只是您嘗試查找的信號模式的時間反轉。所以順便說一下:如果你有一個測量的信號模式,將其反轉,並將其設置爲FIR濾波器的脈衝響應。有沒有必要,如果你有在時域測量(這兩種方法是等效的,但一個更容易出錯,那麼其他)
相關問題
- 1. 如何dplyr過濾器匹配?
- 2. 如何爲我的自定義適配器實現過濾器?
- 3. 過濾器是如何實現的?
- 4. 如何實現android的過濾器listview
- 5. Elasticsearch匹配過濾器
- 6. XSLT 2.0:匹配過濾器
- 7. 如何實現hamcrest匹配器
- 8. 如何使用CoreImage過濾器實現灰度過濾器?
- 9. solr如何實現過濾器搜索
- 10. 玩2.5.4 - 如何實現CSRF過濾器?
- 11. 如何在AngularJS中實現過濾器?
- 12. AngularJS:如何實現Live TimeAgo過濾器?
- 13. Consul-Template過濾器如果不匹配
- 14. 如何過濾的字典來匹配
- 15. 豬過濾器匹配過多
- 16. C++ SSE過濾器實現
- 17. feColorMatrix過濾器中的顏色匹配
- 18. ElasticSearch,與過濾器的多重匹配?
- 19. 的Javascript過濾器和匹配陣列
- 20. 完全匹配數組的過濾器
- 21. 熊貓:如何提取匹配過濾器1或過濾器2
- 22. 如何在自定義數組適配器的listview中實現過濾器?
- 23. Python中的匹配過濾
- 24. 如何實現treetableview的過濾
- 25. WinDBG的 - 如何轉儲匹配給定過濾器字符串
- 26. 如何獲得過濾器對象的匹配長度?
- 27. 文本過濾器,多個匹配
- 28. log4net字符串匹配過濾器
- 29. AngularJS過濾器完全匹配
- 30. Linq to SQL過濾器匹配
請爲您的問題添加一些細節。你有什麼嘗試?使用'filter'函數時遇到什麼問題?你用行話說話,這表明你理解了這個問題,但是你的問題表明你不明白你在做什麼。幫助我們找出你*需要幫助的部分。 – nispio
@nispio我有一個模板。我通過對模板進行傅里葉變換的共軛傅里葉逆變換來計算匹配濾波器的脈衝響應。我想使用Matlab中的'filter'命令對我的一個可用EEG通道執行匹配濾波操作。使用濾波器命令,係數'b'是我的脈衝響應?此外,我想實現Matlab代碼來對匹配濾波器的輸出進行閾值檢測以檢測峯值。我可以如何實現? – Mikonio
太棒了!現在我們正在接近一個可回答的問題。 (也許你應該考慮編輯你的問題,而不是在評論中添加細節。)現在,你到目前爲止嘗試了什麼,以及遇到了什麼問題? – nispio