我有一个模板。我通过对模板进行傅里叶变换的共轭傅里叶逆变换来计算匹配滤波器的脉冲响应。我想使用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