将信号的特定值设置为零
setting specific values of a signal to zero
我有一个信号,我想将小于特定点的值设置为零(在我的示例中,该值为 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 的负值,任何想法如何修改我的代码?提前致谢。
只需使用布尔索引和绝对值:
sig(abs(sig) < 0.005) = 0;
这会就地修改信号。如果您不想修改原始矢量,只需复制它并在副本上就地执行此操作。
如果您有一个数组 A
并且想要将一些特定值设置为零,请执行以下操作:
A=rand(100,1)-0.5; % example array
A(abs(A)<0.005)=0
如果您想创建一个没有这些值的新数组,请执行
B=A(abs(A)>0.005);
我有一个信号,我想将小于特定点的值设置为零(在我的示例中,该值为 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 的负值,任何想法如何修改我的代码?提前致谢。
只需使用布尔索引和绝对值:
sig(abs(sig) < 0.005) = 0;
这会就地修改信号。如果您不想修改原始矢量,只需复制它并在副本上就地执行此操作。
如果您有一个数组 A
并且想要将一些特定值设置为零,请执行以下操作:
A=rand(100,1)-0.5; % example array
A(abs(A)<0.005)=0
如果您想创建一个没有这些值的新数组,请执行
B=A(abs(A)>0.005);