【发布时间】:2017-01-20 19:36:48
【问题描述】:
我有一个随机信号,我想给它添加一个随机噪声。
我可以使用awgn 或randn 为标准信号(如正弦、余弦、方波、锯齿波等)添加噪声
但是当我尝试在像signal = [200 180 160 120 80 80 70 70 65 50 55 120 10 10];这样的随机信号上添加相同的噪声时,这不起作用
这是我尝试过的两种方法:
signal = [200 180 160 120 80 80 70 70 65 50 55 120 10 10 10]; %original signal
plot(signal)
sigma = 0.07; %noise standard deviation
noisy = signal + sigma*randn(size(signal)); %noisy signal
plot(noisy)
或
signal = [200 180 160 120 80 80 70 70 65 50 55 120 10 10 10];
s = awgn(signal,10,'measured');
plot([signal s])
如何为这些随机信号添加噪声?为什么我不能使用标准命令完成这项任务?
【问题讨论】:
-
您的 sigma 与信号相比如此之小是否正常?
-
“它不起作用”是什么意思?
-
@obchardon :您可以根据需要尽可能多地改变 sigma,sigma 的值无关紧要,因为我只需要在原始信号上叠加一个随机噪声。由于我是堆栈溢出的新手,而且我的声誉只有“5”,因此我无法添加任何图像来支持我的问题。
-
但我的意思是,你的代码是正确的,它正在工作。
-
据我所知,它应该可以工作。只有您可能在绘图上看不到这一点,因为当您的信号范围从 10 到 200 时,0.07 不可见。尝试缩放,然后尝试将噪声 sigma 更改为可观察的值,例如 20。也许您被以下事实误导您使用在点之间绘制直线的 plot() 函数吗?如果您认为没有差异,请尝试:
signal = [200 180 160 120 80 80 70 70 65 50 55 120 10 10 10]; plot(signal); hold on; % to stop newer plots overwrite previous ones sigma = 10; noisy = signal+sigma*randn(size(signal)); plot(noisy,'r');