如何在 MATLAB 中的信号中添加 x% 噪声?

How to add x % noise in a signal in MATLAB?

我正在尝试按如下方式(在 MATLAB 中)向测量信号添加 5% 的噪声,但是当我计算添加后的噪声百分比时,它超出了 +/- 5 % 。你能告诉我为什么会这样吗?它不应该在 +/- 5 % 的范围内吗?

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

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

noisySignal = signal + noise;

percent_noise = 100*(noisySignal-signal)./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 之间的值。