matlab如何给时域信号添加(白)噪声

2020-11-22 05:14:27 字数 6056 阅读 2477

1楼:匿名用户

可以产生一个噪声信号(rand函数),直接加(+)到你的信号上。

或者用awgn函数加白噪信号

如何在matlab里面向信号里面加入白噪声?

2楼:go风影

y=awgn(x,snr),加性高斯白du噪函数,x原信号,zhisnr是信噪比,不知道你dao这个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('加高斯白噪信号');

3楼:匿名用户

在matlab中无论是wgn还是baiawgn函数,实质du都是由randn函数产生

zhi的噪声。即,wgn函数中调

dao用了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))

4楼:匿名用户

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')

5楼:日向淳正

l=length(y1);

noise=rand(1,l); %生成跟你的信号一样长度的白噪声.

y=y1+noise; %加入白噪声

matlab如何添加自定义信噪比的噪声信号? 20

6楼:会飞的小兔子

clear all;

close all;

x=0:0.2:10;

data1=sin(x);

plot(x,data1);

hold on;

data2=awgn(data1,10*log10(0.05));

plot(x,data2,'r-');

hold off;

扩展资料

matlab添加白噪声叠加到信号:

function [y,noise] = noisegen(x,snr)

% noisegen add white gaussian noise to a signal.

% [y, noise] = noisegen(x,snr) adds white gaussian noise to x. the snr is in db.

noise=randn(size(x));

noise=noise-mean(noise);

signal_power = 1/length(x)*sum(x.*x);

noise_variance = signal_power / ( 10^(snr/10) );

noise=sqrt(noise_variance)/std(noise)*noise;

y=x+noise;

其中x是纯信号,snr是要求的信噪比,y是带噪信号,noise是叠加在信号上的噪声。

7楼:匿名用户

对汉明编码不太了解,不过你的**里for循环中没有地方体现了信噪比snr,从计算到画图全都是一样的过程。我的理解是code+randn(m,n)*f(snr)---这里落下了跟snr有关的幅度?

另外code+randn(m,n)>0.95得到的是一个0-1矩阵,rem(*,2)似乎也没有特别的意义吧?

8楼:匿名用户

matlab我接触不多,不好意思。

matlab中如何给我的一段信号加高斯白噪声

9楼:yesyes科

1、启动matlab后,启动此工具,添加下图所示模块。添加模块后,双击打开设置界面后,点击下方help,查看该功能说明。

2、对于下图2两个参数分别表示功率谱密度和随机数起始,如果不改变seed起始,每次使用此模块生成的高斯白噪声,不会发生任何变化。

3、所以,simulink中想生成多大功率谱密度,直接设置参数即可,这里设置为1,tc设为1*10e-3,并生成了图像。

4、而对于wgn函数,需要用第四个参数控制单位,如果不进行设置则单位为dbw,需要进行设置,将其改为线性w这一单位,具体使用如下图所示。

5、实际使用时,对参数进行相应设置,即可达到和使用前述模块同样的效果。输出使用该函数生成的噪声图像。

10楼:匿名用户

你这个是信号波形数据吗? 加噪声一般是对模拟信号加噪声matlab有一个函数很方便加入高斯白噪声x是信号序列, y = awgn(x,snr) 在信号x中加入高斯白噪声,信噪比snr以db为单位。x的强度假定为0dbw。

比如:x = sqrt(2)*sin(0:pi/8:6*pi);

y = awgn(x,10);

plot(x,'b');hold on; plot(y,'r')

怎样用matlab画出语音信号的时域波形和频谱图和画出加噪声-3db的白噪声后的波形、频谱,滤波

11楼:匿名用户

预计用到的函数有:

wavread();读入wav格式的语音信号fft()快速傅里叶变换

plot()绘制二维图形

randn() 高斯白噪声

示例:x=wavread('file.wav');%读取波形文件获得数据

x=x(1:1024);%取前1024点作为处理使用数据fx=fft(x);

figure(1);

subplot(211);

plot(x);

subplot(212)

plot(abs(fx));

snr=.3;

x1=x+snr*randn(1,1024);%添加高斯白噪声fx1=fft(x1);

figure(2);

subplot(211);

plot(x1)

subplot(212);

plot(abs(fx1))

怎样用matlab给一个复信号叠加一个副高斯白噪声信号?

12楼:砂粒

用matlab给一个复信号叠加一个副高斯白噪声信号的方法:

matlab中产生高斯白噪声非常方便,可以直接应用两个函数,一个是wgn,另一个是awgn。wgn用于产生高斯白噪声,awgn则用于在某一信号中加入高斯白噪声。

1. wgn:产生高斯白噪声。

y = wgn(m,n,p) 产生一个m行n列的高斯白噪声的矩阵,p以dbw为单位指定输出噪声的强度。

y = wgn(m,n,p,imp) 以欧姆(ohm)为单位指定负载阻抗。 y = wgn(m,n,p,imp,state) 重置randn的状态。

在数值变量后还可附加一些标志性参数:

y = wgn(,powertype) 指定p的单位。powertype可以是'dbw', 'dbm'或'linear'。线性强度(linear power)以瓦特(watt)为单位。

y = wgn(,outputtype) 指定输出类型。outputtype可以是'real'或'***plex'。

2. awgn:在某一信号中加入高斯白噪声。

y = awgn(x,snr) 在信号x中加入高斯白噪声。信噪比snr以db为单位。x的强度假定为0dbw。如果x是复数,就加入复噪声。

y = awgn(x,snr,sigpower) 如果sigpower是数值,则其代表以dbw为单位的信号强度;如果sigpower为'measured',则函数将在加入噪声之前测定信号强度。

y = awgn(x,snr,sigpower,state) 重置randn的状态。

y = awgn(,powertype)指定snr和sigpower的单位。powertype可以是'db'或'linear'。如果powertype是'db',那么snr以db为单位,而sigpower以dbw为单位。

如果powertype是'linear',那么snr作为比值来度量,而sigpower以瓦特为单位。

13楼:匿名用户

有个wgn函数,可以产生白高斯噪声。。。。

另外,rand是均匀分布,不是正态分布。。。。

14楼:匿名用户

给你个邮箱 yinxiaoming1975@126.***

这是我们尹教授的邮箱,他可能会帮你解决问题的!

matlab 给信号加高斯白噪声

15楼:匿名用户

一般是这样的

如果一个信号为x (向量),产生一个均值为0,方差为a的高斯白噪声,noise = a*randn(size(x));

则噪声信号为

y = x + noise;

16楼:匿名用户

给信号x加白噪声:

y=awgn(x,snr);函数

matlab中给信号加入白噪声,如何利用傅里叶变换去噪

17楼:我是舞三

总体思路:设定筛选条件,将数组中符合条件的元素筛选出来(可以筛选出元素值也可以筛选出元素对应的下标),然后将元素值赋值给另外一个数组的元素

参考**:

clcclear all

close all

x = randi(10, 1, 5); % 原始数据

disp('x=');

disp(x);

y1 = -1 * ones(1, length(x)); % 存储筛选出的结果,并初始化成不可能出现的结果

%-- 筛选符合条件的元素下标,并将对应元素存到y1 --%

ix = find(x>=3); % 例如,筛选出原始数据中大于3的元素的下标

if(isempty(ix))

disp('x的元素均不符合条件');

else

y1(1:length(ix)) = x(ix); % 将符合条件的元素存到y1中

y1( find(y1==-1) ) = ; % 剩余元素删除

disp('y1=');

disp(y1);

y2 = -1 * ones(1, length(x)); % 存储筛选出的结果,并初始化成不可能出现的结果

%-- 筛选符合条件的元素值,并存入y2 --%

for i=1:length(x)

if(x(i)>=3) % 逐个检测x的元素是否符合条件,把符合条件的元素值赋值给y2

y2(i) = x(i);

endend

y2( find(y2==-1) ) = ; % 剩余元素删除

disp('y2=');

disp(y2);

%----------------------------------%

输出结果

x=7 1 9 10 7

y1=7 9 10 7

y2=7 9 10 7