产⽣⾼斯⽩噪声的matlab代码_MATLAB在通信系统仿真中的
注意
(遇到点写⼀点)
1.调⽤函数fourier和ifourier之前,需⽤syms命令对所⽤到的变量进⾏说明,即将这些变量说明成符号变量。
clear all
syms t;
f=t*exp(-abs(t));
subplot(121);ezplot(f);
F=fourier(f);
subplot(122);ezplot(abs(F));
2.采⽤fourier和ifourier得到的返回函数,仍是符号表达式。若作图,应⽤ezplot⽽不是plot。若返回函数有如狄拉克函数
等。则⽤ezplot也⽆法作图。
clear all
syms t w;
F=pi*exp(-abs(w));
subplot(121);ezplot(abs(F));
f=ifourier(F,t);%因为返回是关于x的函数,所以指定返回t的函数。
subplot(122);ezplot(f);
plot是绘制⼆维图形,并且是x,y的表达式是已知的或者是形如y=f(x)这样确切的表达式,⽽ezplot是画出形如f(x,y)=0这种隐函数图形。
3.严格的说,只有⾮周期信号才有Fourier变换。(不满⾜绝对可积)但若满⾜Dirichlet条件,可展开为
Fourier级数。
是k次谐波处的Fourier系数。
是谐波幅度的概念,
是频谱密度的概念。
4.离散时间信号的Fourier变换,两个特点:
(1)变换是⽤于⽆限长的序列;
(2)变换的结果是⾃变量
的连续函数。
*两个序列的循环卷积序列:
clear
*DFT对应循环卷积⽽不对应线性卷积。若⽤DFT进⾏线性卷积,需对两长度分别为M,L的序列都扩展为长度为M+L-1的新序列。例⼦及程序如下:
n1=0:20;
n2=0:10;
%%直接法
h=sinc(0.2*n1);%两序列
x=exp(-0.2*n2);
y=conv(x,h);
%%DFT法
h1=[h zeros(1,length(x)-1)];
x1=[x zeros(1,length(h)-1)];
H1=fft(h1);
X1=fft(x1);
Y1=H1.*X1;
y1=ifft(Y1);
subplot(211);stem(y);title('直接计算')
subplot(212);stem(y1);title('DFT计算')
5.加性⾼斯⽩噪声(AWGN)表现为信号围绕平均值的⼀种随机波动过程。加性⾼斯⽩噪声的均值为0,⽅差为噪声功率的⼤⼩。⼀般情况下,噪声功率越⼤,信号的波动幅度越⼤,接收端接收到的信号的误⽐特率就越⾼。
awgn(x,snr)%把加性⾼斯⽩噪声叠加到输⼊信号中,snr以dB的形式指定噪声的功率
*awgn函数使⽤⽅法:
awgn将⽩⾊⾼斯噪声添加到信号中
语法
y = awgn(x,snr)
y = awgn(x,snr,sigpower)
y = awgn(x,snr,'measured')
y = awgn(x,snr,sigpower,state)
y = awgn(x,snr,'measured',state)
y = awgn(...,powertype)
描述
y = awgn(x,snr)将⽩⾼斯噪声添加到向量信号x中。标量snr指定了每⼀个采样点信号与噪声的⽐率,单位为dB。如果x是复数的,awgn将会添加复数噪声。这个语法假设x的能量是0dBW。
y = awgn(x,snr,sigpower)和上⾯的语法相同,除了sigpower是x的能量,单位为dBW。
y = awgn(x,snr,'measured')和y = awgn(x,snr)是相同的,除了agwn在添加噪声之前测量了x的能量。
y = awgn(x,snr,sigpower,state)和y = awgn(x,snr,sigpower)是相同的,除了awgn⾸先重置了正态随机数产⽣器randn的状态为整数状态。
y = awgn(x,snr,'measured',state)和y = awgn(x,snr,'measured')是相同的,除了awgn⾸先重置了正态随机数产⽣器randn的状态为整数状态。
y = awgn(...,powertype)和前⾯的语法相同,除了字符串powertype指定了snr和sigpower的单位。powertype的选择有'db' and
'linear',如果powertype是'db',那么snr是按照dB为单位测量的,sigpower是按照dBW为单位测量的。如果powertype是线性的,snr是按照⼀个⽐率测量的,sigpower是以⽡特为单位测量的。Relationship Among SNR, Es/N0, and Eb/N0
对于SNR和其他的噪声相对能量测量的关系,查看Describing the Noise Level of an AWGN Channel。
t=0:0.001:10;
x=sin(2*pi*t);
snr=20;%噪声功率为20dBW
y0=awgn(x,snr);%将⾼斯⽩噪声叠加到信号上
y1=awgn(x,snr,10);%y1=awgn(x,snr,sigpower)假设了输⼊信号功率为sigpower单位dBW
y2=awgn(x,snr,'measured');%⾸先计算输⼊信号的功率,然后按照snr添加相应的⾼斯⽩噪声
subplot(411);plot(t,x);title('正弦信号x');
subplot(412);plot(t,y0);title('叠加了⾼斯⽩噪声后的正弦信号0');%若未说明输⼊信号功率,则假设为0dBW
subplot(413);plot(t,y1);title('叠加了⾼斯⽩噪声后的正弦信号1');%因为输⼊信号实际功率(输⼊函数是0.5)⼩于10dBW,图是根据给出的输⼊信号功率画的subplot(414);plot(t,y2);title('叠加了⾼斯⽩噪声后的正弦信号2');%(添加的噪声功率根据实际给出输⼊信号的信号功率计算得出)
z0=y0-x;
var(z0);%均⽅差
6.上⾯的例⼦太简单,下⾯看这样⼀个例⼦:
*仿真正交相移键控(QPSK)调制的基带数字通信系统通过AWGN信道的误符号率(SER)和误⽐特
率(BER),假设发射端信息⽐特采⽤Gray编码影射,基带脉冲采⽤矩形脉冲,仿真时每个脉冲的采样点数为8,接收端采⽤匹配滤波器进⾏相⼲解调。
代码如下:
%                    .::::.
%                  .::::::::.
%                :::::::::::
%            ..:::::::::::'
%          '::::::::::::'
%            .::::::::::
%        '::::::::::::::..
%            ..::::::::::::.
%          ``::::::::::::::::
%            ::::``:::::::::'        .:::.
%          ::::'  ':::::'      .::::::::.
%        .::::'      ::::    .:::::::'::::.
%        .:::'      :::::  .:::::::::' ':::::.
%      .::'        :::::.:::::::::'      ':::::.
%      .::'        ::::::::::::::'        ``::::.
%  ...:::          ::::::::::::'              ``::.
% ```` ':.          ':::::::::'                  ::::..
%                    '.:::::'                    ':'````..
%
clear all
nSamp=8;%矩形脉冲的采样点数
numSymb=200000;%每种SNR下传输的符号数
M=4;%QPSK的符号类型数
SNR=-3:3;%SNR的范围
grayencod=[0 1 3 2 ];%Gray编码格式
for ii=1:length(SNR)
msg=randsrc(1,numSymb,[0:3]);%产⽣发送符号,1⾏numSymb列0-3的数。
msg_gr=grayencod(msg+1);%进⾏Gray编码影射(格雷码)
msg_tx=pskmod(msg_gr,M);%QPSK调制
msg_tx=rectpulse(msg_tx,nSamp);%矩形脉冲成型
用subplot函数
msg_rx=awgn(msg_tx,SNR(ii),'measured');%通过AWGN信道
msg_rx_down=intdump(msg_rx,nSamp);%匹配滤波相⼲解调
msg_gr_demod=pskdemod(msg_rx_down,M);%QPSK解调
[dummy graydecod]=sort(grayencod);graydecod=graydecod-1;
msg_demod=graydecod(msg_gr_demod+1);%Gray编码逆映射
[errorBit BER(ii)]=biterr(msg,msg_demod,log2(M));%计算BER
[errorSym SER(ii)]=symerr(msg,msg_demod);%计算SER
end
scatterplot(msg_tx(1:100))%画出发射信号星座图
title('发射信号星座图')
xlabel('同相分量')
ylabel('正交分量')
scatterplot(msg_rx(1:100))%画出接收信号星座图
title('接收信号星座图')
xlabel('同相分量')
ylabel('正交分量')
figure
semilogy(SNR,BER,'-r*',SNR,SER,'-r*')%画出BER和SER随SNR变化的曲线
legend('BER','SER')
title('QPSK在AWGN信道下的性能')
xlabel('信噪⽐(dB)')
ylabel('误符号率和误⽐特率')
*仿真8-PSK载波调制信号在AWGN信道下的误码率和误⽐特率性能,并与理论值⽐较。假设符号周期为1s,载波频率为10Hz,每个符号周期内采样100个点。程序如下:
clear
7.matlab中各种线型-颜⾊-标记点
各种颜⾊属性选项
'r' 红⾊ 'm' 粉红
'g' 绿⾊ 'c' 青⾊
'y' 黄⾊ 'k' ⿊⾊
各种线型属性选项
'-' 实线 '--' 虚线
':' 点线 '-.' 点划线
各种标记点属性选项
'.' ⽤点号绘制各数据点 '^' ⽤上三⾓绘制各数据点
'+' ⽤'+'号绘制各数据点 'v' ⽤下三⾓绘制各数据点
'*' ⽤'*'号绘制各数据点 '>' ⽤右三⾓绘制各数据点
' .' ⽤'.'号绘制各数据点 '<' ⽤左三⾓绘制各数据点
's'或squar ⽤正⽅形绘制各数据点'p' ⽤五⾓星绘制各数据点
'd'或diamond⽤菱 形绘制各数据点 'h' ⽤六⾓星绘制各数据点
这些选项可以连在⼀起⽤,如:'-.g'表⽰绘制绿⾊的点划线,'g+'表⽰⽤绿⾊的 '+'号绘制曲线.
注意:
1)表⽰属性的符号必须放在同⼀个字符串中;
2)可同时指定2~3个属性;
3) 与先后顺序⽆关;
4)指定的属性中,同⼀种属性不能有两个以上.

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。