如何在matlab里面向信号里面加入白噪声?
信号是几个余弦函数相加组成的,就像y1=[(pi/2)*cos(2*pi*t)+(pi/64)*cos(pi*t/8+pi/3)]这样的函数,现在我要向掺入2%的白噪声,...
信号是几个余弦函数相加组成的,就像y1=[(pi/2)*cos(2*pi*t)+(pi/64)*cos(pi*t/8+pi/3)]这样的函数,现在我要向掺入2%的白噪声,怎么掺入啊?还有怎么知道已经掺入进取了,麻烦给下程序代码,谢谢!!
展开
4个回答
推荐于2018-02-14
展开全部
在matlab中无论是wgn还是awgn函数,实质都是由randn函数产生的噪声。即,wgn函数中调用了randn函数,而awgn函数中调用了wgn函数。
根据awgn的实现代码可以知道“向已知信号添加某个信噪比(SNR)的高斯白噪声”,
即:awgn(x,snr,’measured’,'linear’),命令的作用是对原信号x添加信噪比(比值)为SNR的噪声,在添加之前先估计信号x的强度。
直接对原始信号添加噪声:
y=x+rand(length(x),1)
y=x+randn(length(x),1))
根据awgn的实现代码可以知道“向已知信号添加某个信噪比(SNR)的高斯白噪声”,
即:awgn(x,snr,’measured’,'linear’),命令的作用是对原信号x添加信噪比(比值)为SNR的噪声,在添加之前先估计信号x的强度。
直接对原始信号添加噪声:
y=x+rand(length(x),1)
y=x+randn(length(x),1))
展开全部
l=length(y1);
noise=rand(1,l); %生成跟你的信号一样长度的白噪声.
y=y1+noise; %加入白噪声
noise=rand(1,l); %生成跟你的信号一样长度的白噪声.
y=y1+noise; %加入白噪声
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
t=0:0.001:1;
y1=(pi/2)*cos(2*pi*t)+(pi/64)*cos(pi*t/8+pi/3);
temp=y1+0.02*y1.*rand(size(y1));
plot(t,y1,t,temp,'r')
y1=(pi/2)*cos(2*pi*t)+(pi/64)*cos(pi*t/8+pi/3);
temp=y1+0.02*y1.*rand(size(y1));
plot(t,y1,t,temp,'r')
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
y=awgn(x,SNR),加性高斯白噪函数,x原信号,SNR是信噪比,不知道你这个2%是能量还是幅值,如果是能量的话,SNR=10*log(100/2);如果是幅值,SNR=20*log(100/2);
代码如下:
clc; clear ;
t=0:0.01:1;
y1=(pi/2)*cos(2*pi*t)+(pi/64)*cos(pi*t/8+pi/3);
SNR=10*log(100/2); % 2%是能量比
x=awgn(y1,SNR);
subplot(211), plot(t,y1);
title('原信号');
% 加入噪声后有毛刺,但2%的噪声有点小,毛刺不明显。
subplot(212), plot(t,x);
title('加高斯白噪信号');
代码如下:
clc; clear ;
t=0:0.01:1;
y1=(pi/2)*cos(2*pi*t)+(pi/64)*cos(pi*t/8+pi/3);
SNR=10*log(100/2); % 2%是能量比
x=awgn(y1,SNR);
subplot(211), plot(t,y1);
title('原信号');
% 加入噪声后有毛刺,但2%的噪声有点小,毛刺不明显。
subplot(212), plot(t,x);
title('加高斯白噪信号');
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询