我正在处理一些加速度计数据,并且有人建议我做一些窗口来隔离信号中的不同事件。与大多数事情不同,在MATLAB中很少记录窗口,我希望实现一些简单的窗口示例(或建议的读取和链接)。我也想知道为什么窗口根本不是将数据分成几个部分并分析各个帧。感谢。
我的初始数据看起来像这样:上面显示的是单峰值扩展。
也可以建议我如何使用MATLAB窗口显示第一个图。
答案 0 :(得分:1)
窗口化在信号处理理论领域比编程更多,但在理解FFT的输出时它非常重要,因此可能需要更详细的解释。
基本上,当你截断一个信号(例如用块处理它)时,你会以一种相当令人惊讶的方式改变频域。你最终用一个"窗口"卷积(即涂抹)所有频率词。功能。如果除了truncate之外什么也不做,那么该函数就是sin()/ sin()。会发生的是,这会在整个频谱上传播原始信号的频率内容,如果存在主导成分,那么其他所有内容都会被掩埋。块越短,效果越差,因为窗口在频域中越来越胖。
使用成形窗口(例如汉明,汉宁或布莱克曼)进行窗口化会改变频域响应,使得拖尾更加局限于原始信号。由此产生的频域更加清晰。
要分析数据块x,那么应该做的是
transform=fft(x.*hanning(length(x)));
结果将很复杂,您可以使用plot(20*log10(abs(transform)))
有关数学分析,请参阅https://cnx.org/contents/4jyGq_c3@6/Spectrum-Analysis-Using-the-Di
如果您想了解窗口操作的实际操作经验,请尝试https://cnx.org/contents/CJ3fYEow@2/Spectrum-Analyzer-MATLAB-Exerc