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