【matlab】仿真4PSK调制信号在高斯信道下的性能,并与理论分析结果比较——仿真篇
2016-11-24 16:06
645 查看
三、4PSK调制信号在高斯信道下的性能仿真[--详细解析--]
1. MATLAB进行仿真程序如下:
1. MATLAB进行仿真程序如下:
%{ ----------------------------------------------------------------------------- File: 说明文件 Time: Created on 2016-11-23 Author: Y. S. Cui <崔延硕> ----------------------------------------------------------------------------- 声明:所有程序均已在以下环境调试通过,现声明环境: ----------------------------------------------------------------------------- -|- 1、处理器: Pentium(R) Dual-Core CPU E5800 @ 3.20GHz 3.20GHz 2、安装内存(RAM):8.00GB 3、系统类型: Matlab R2014a 4、系统位数: 64位操作系统,基于x64的处理器 ----------------------------------------------------------------------------- ----------------------------------------------------------------------------- 题目:试编写程序,仿真4PSK调制信号在高斯信道下的性能,并与理论分析结果比较。 分析: ----------------------------------------------------------------------------- %} % //程序源代码: %------------------------------------------% clear all;clear;close SNR=0:1:14; %误码率范围 %---------------------------------------------------% %---------------------------------------------------% %--------------到此 for K=1:15循环开始----------------% for k=1:15 M=250; %---------------------------------------------------% %--------------到此 for l=1:M循环开始----------------% for l=1:M N=80; F=10; n=0; cntError=0; m=1:1:10; s0=sin(2*pi*m/F); %00 0o s0=s0'; %s0转置 s1=sin(2*pi*m/F+pi/2);%10 90o s1=s1'; %s1转置 s2=sin(2*pi*m/F+pi);%11 180o s2=s2'; %s2转置 s3=sin(2*pi*m/F+3*pi/2);%01 270o s3=s3'; %s3转置 source=randsrc(1,N,[0,1,2,3;.25,.25,.25,.25]); %{ randsrc(m,n); 输出m*n阶或m*m阶矩阵,元素为随机出现的-1或1,概率为1/2; %随机信源元素为随机出现的0/1/2/3,概率为0.25; randsrc(1,N,[0,1,2,3;.25,.25,.25,.25]) ans = Columns 1 through 14 0 2 2 2 2 0 1 0 0 0 0 1 2 3 Columns 15 through 28 0 2 1 0 3 0 1 2 0 2 3 3 1 1 Columns 29 through 42 2 2 3 0 2 2 3 3 3 2 3 1 0 2 Columns 43 through 56 0 2 1 1 1 1 3 1 0 2 3 1 2 3 Columns 57 through 70 3 0 3 2 0 0 2 0 3 1 3 0 0 2 Columns 71 through 80 2 2 3 3 1 3 1 1 3 2 %} %---------两个循环------------------% for i=1:N %1-80 for j=1:F %1-10 modsrc(j+(i-1)*F)=sin(pi/2*source(i)+2*pi*j/F); end end %---------awgn - Add white Gaussian noise to signal------------------% modsrcnoise=awgn(modsrc,SNR,4); % 10*80——>1*800矩阵 y = awgn(x,snr,sigpower) %{ help awgn awgn - Add white Gaussian noise to signal This MATLAB function adds white Gaussian noise to the vector signal x. y = awgn(x,snr) y = awgn(x,snr,sigpower) y = awgn(x,snr,'measured') y = awgn(x,snr,sigpower,s) y = awgn(x,snr,'measured',state) y = awgn(...,powertype) ans = Columns 1 through 8 0.6321 0.6895 0.8444 0.4612 0.2301 -0.3356 -1.7327 -0.6224 ...... Columns 793 through 800 0.4677 0.5009 -0.0102 -0.4438 -0.6277 -0.9017 -0.3601 -0.2201 %} for i=1:N %1-80 x = modsrcnoise((i-1)*F+(1:F)); %解调经过均衡器处理的数据 if x*(s0-s1)>=0 && x*(s0-s2)>=0 && x*(s0-s3)>=0; receive(i)=0;% 对应0 elseif x*(s1-s0)>0 && x*(s1-s2)>=0 && x*(s1-s3)>=0; receive(i)=1;% 对应1 elseif x*(s2-s0)>0 && x*(s2-s1)>0 && x*(s2-s3)>=0; receive(i)=2;% 对应2 else receive(i)=3;% 对应3 end end for i=1:N if source(i)==receive(i); else cntError=cntError+1; end end n=n+N; ErrorRate(l)=cntError/n; end %for 1=1:M for l=1:M %--------------到此 for l=1:M循环终结----------------% %---------------------------------------------------% ErrorRatesum(k)=0; for i=1:M ErrorRatesum(k)=ErrorRatesum(k)+ErrorRate(i); end ErrorRateave(k)=1/M*ErrorRatesum(k); end %--------------到此 for K=1:15循环终结----------------% %---------------------------------------------------% %---------------------------------------------------% semilogy(SNR,ErrorRateave,'-o'); %{ 区别就是对谁取对数然后取代原来的x,y你可以绘图看看是不是这么回事。 譬如x = 0:.1:10; semilogx(x,10.^x)图像是曲线 x = 0:.1:10; semilogy(x,10.^x)图像是直线 semilogx和semilogy的区别: semilogx是将X轴的值用对数来表示; semilogy是将Y轴得到的值用对数来表示! %} %semilogy(SNR,ber1,'+-',SNR,ber2,'-'); grid on hold on ENR=10.^(SNR/10); for i=1:15 syms t %This MATLAB function creates symbolic variables t f=1/sqrt(2*pi)*exp(-t.^2/2);%标准正态分布 p(1,i)=int(f,t,-sqrt(ENR(i)),inf); %{ 这个Matlab函数返回矩阵形式的CIC滤波器的状态,而不是本地filtstates对象。 integerstates = int(hm.states) %} end p=double(p);%double - Convert to double precision p=1-p.^2; semilogy(SNR,p,'r'); title('4PSK平均误码率');xlabel('SNR信噪比(db)');ylabel('BER误码率'); legend('实际结果','理论结果');
相关文章推荐
- 【matlab】仿真4PSK调制信号在高斯信道下的性能,并与理论分析结果比较——理论篇
- 排序算法系列之八大排序算法性能比较-从实验结果分析
- matlab环境下连续信号采样处理的仿真分析设计
- 多普勒失真信号重采样的Matlab仿真分析
- Java 字符串拼接 五种方法的性能比较分析
- .NET批量大数据插入性能分析及比较(5.使用SqlBulkCopy)
- 《MATLAB在语音信号分析和合成中的应用》
- Java 字符串拼接 五种方法的性能比较分析 从执行100次到90万次
- 性能测试结果分析(中级测试)
- 性能测试中影响性能结果数据的因子分析
- “天链一号01 星”中继性能仿真分析
- 转-MongoDB、HandlerSocket和MySQL性能测试及其结果分析
- 《LoadRunner 没有告诉你的》之二——描述性统计与性能结果分析(续)
- 一起谈.NET技术,数组排序方法的性能比较(3):LINQ排序实现分析
- KAZE 算法原理与源码分析(四)KAZE特征的性能分析与比较
- 性能测试结果分析思路
- .NET深入学习笔记(2):C#中判断空字符串的4种方法性能比较与分析
- .NET学习笔记-2:C#中判断空字符串的4种方法性能比较与分析
- (转)LR性能测试结果样例分析
- Third order system anlysis 自控 三阶系统的稳定性分析 matlab multisim仿真分析