如何增加X%的噪音在MATLAB的信号?

问题描述

我试图噪声添加5%到如下(在MATLAB)测得的信号,但是当我添加之后计算噪声的百分比,它是超出+/- 5%。你能告诉我,为什么是这种情况?不应该它是结合的+/- 5%之内?

 noiseSigma = 0.05 * signal;                % signal is my original signal

signal

noise = noiseSigma .* randn(1,length(signal));

noisySignal = signal + noise;

Noise in signal

percent_noise = 100*(noisySignal-signal)./signal;

percent of noise in signal

解决方法

randn 取自正态分布,因此它可以大于 1。

如果您想将噪音限制在 5%,您可以尝试以下操作:

noise_limit = 0.05 * signal;
addative_noise = noise_limit .* (2*rand(1,length(signal))-1);
result = signal+addative_noise;

这是有效的,因为 rand 选择了 0 和 1 之间的值。乘以二减一,它选择-1和1之间的值。