在时域中,我想删除孤立的干扰(点击,弹出,破解),其余部分保持不变,如图所示。在Matlab®中最合适的方法是什么?音频信号表示为一维矢量。任何代码示例都表示赞赏。
答案 0 :(得分:3)
首先,我尝试使用此代码来近似您的信号。 。
x = zeros(10,1);
x = [x; randn(50,1)];
x = [x; zeros(100,1)];
x = [x; -1; 1];
x = [x; zeros(10,1);];
stem (x)
下一步是使用简单的移动平均滤波器和零相位滤波来提取包络
nFilt = 10;
b = ones(nFilt,1)/nFilt;
y = filter(b,1,flipud(abs(x)));
y = filter(b,1,flipud(abs(y)));
hold on; plot(y, 'r')
一旦你有了这个,简单的阈值将帮助你删除孤立的事件。 。
x(y<0.2) = 0;
figure; stem(x, 'g')
调整滤镜内核/阈值以满足您的需求。