将信号的特定值设置为零

时间:2015-01-14 11:07:09

标签: matlab

我有一个信号,我想将小于特定点的值设置为零(在我的示例中,值为0.005),我知道它类似于过滤过程但我想要清理完全来自静电噪声的信号,所以我的代码是:

close all;clear all;clc;
sig=audioread('sp1.mp3');
N=length(sig);
n_sig=zeros(N,1);
for i=1:N

    n_sig= sig((sig>0.005)); %the new signal

end 

问题是它创建了一个无限循环,我必须手动停止代码,它也只给我正值,但我也想要小于-0.005的负数,任何想法如何修改我的代码?提前谢谢。

2 个答案:

答案 0 :(得分:3)

如果您有一个数组A并且想要将某些特定值设置为零,请执行以下操作:

A=rand(100,1)-0.5; % example array

A(abs(A)<0.005)=0

如果要创建没有这些值的新数组,请执行

B=A(abs(A)>0.005);

答案 1 :(得分:2)

只需使用布尔索引和绝对值:

sig(abs(sig) < 0.005) = 0;

这会就地修改信号。如果您不想修改原始矢量,只需复制它并在副本上进行就地操作。