课程设计作业

MSK调制解调

clear all;
close all;
%%
%系统参数设计
T_start=0;%开始时间
T_stop=10;%截止时间
T=T_stop-T_start;%仿真持续时间rs=10;%传输速率
NumBits=rs*T;%传输bit数fc=20;%载波频率
L=100;%码元长度N_sample=NumBits*L;% 采样点数
T_sample=T/N_sample;%采样间隔
f_sample=1/T_sample;%采样频率f_res=f_sample/N_sample;%频率分辨率Tb=T/NumBits;%码元周期,单个码元持续时间%载波
n=1:N_sample;
c1=cos(2*pi*fc*n*T_sample);
c2=sin(2*pi*fc*n*T_sample);%%
%MSK信号的调制%随机产生原始01信息比特
a=rand(1,NumBits)>0.5;%差分编码
a_cf=zeros(1,NumBits);
a_cf(1)=a(1);
for i=2:NumBitsa_cf(i)=~xor(a(i),a_cf(i-1));%进行同或操作
end%串并变换
A=reshape(a_cf,2,NumBits/2);
a_I=A(1,:);
a_Q=A(2,:);%0转换为-1,1转换为1
a_I=a_I*2-1;
a_Q=a_Q*2-1;%与余弦相乘进行脉冲成型,得到基带信号
n=1-L:L;
e_I=[];e_Q=[];
for i=1:NumBits/2e_I=[e_I,a_I(i)*cos((pi*n*T_sample)/(2*Tb))];e_Q=[e_Q,a_Q(i)*cos((pi*n*T_sample)/(2*Tb))];
end%与载波相乘
sI=e_I.*c1;%I支路信号
sQ=e_Q.*c2;%Q支路信号
s=sI-sQ;%MSK调制信号%
%%
%瑞利信道
SNR=15;%输入信噪比
snr=10^(SNR/10);
N0=1/2/snr;%计算噪声功率
N0_dB=10*log10(N0);%将噪声功率转换为dBW
h=raylrnd(1/sqrt(2),1,N_sample);%产生瑞利信号
n_i=wgn(1,N_sample,N0_dB);%产生高斯噪声
y_n=s.*h+n_i;%MSK调制信号通过瑞利信道
y_n0=s+n_i;%MSK信号通过高斯信道%%
%MSK信号的解调%通过带通滤波器,去除噪声
[b1,a1]=butter(4,[0.02,0.06]);%计算带通滤波器的H(z)系数
y=filtfilt(b1,a1,y_n);%对信号y_i进行滤波,得到信号y%与恢复载波相乘
x1_I=y.*c1;
x1_Q=-y.*c2;%通过低通滤波器,分离出两路信号
[b2,a2]=butter(4,0.02,'low');%计算低通滤波器H(z)系数
x2_I=filtfilt(b2,a2,x1_I);%对信号x1_I进行滤波,得到信号x2_I
x2_Q=filtfilt(b2,a2,x1_Q);%对信号x1_Q进行滤波,得到信号x2_Q%提取出经过差分编码的01信息比特
d_I=fun_tiqu(x2_I,2*L);
d_Q=fun_tiqu(x2_Q,2*L);%并串变换,
d0(1:2:NumBits)=d_I;
d0(2:2:NumBits)=d_Q;%差分解码,恢复出原始01信息比特
d=zeros(1,NumBits);
d(1)=d0(1);
for i=2:NumBitsd(i)=~xor(d0(i-1),d0(i));%进行同或操作
end%%
%误码率计算
err=length(find(d~=a));%计算解调信号中错误码元个数
BER_test=err/NumBits;%%
%图像
figure(1);
subplot(4,2,1:2);stem(a);title('原始01信息比特序列a');axis([1,20,0,1]);
subplot(4,2,3:4);stem(a_cf);title('a经过差分编码后得到a_cf');axis([1,20,0,1]);
subplot(4,2,5);stem(a_I);title('I支路-1,1比特序列a_I');axis([1,10,-1,1]);
subplot(4,2,6);stem(a_Q);title('Q支路-1,1比特序列a_Q');axis([1,10,-1,1]);
subplot(4,2,7);plot(e_I);title('I支路进行脉冲成型后得到e_I');axis([1,2000,-1.5,1.5]);
subplot(4,2,8);plot(e_Q);title('Q支路进行脉冲成型后得到e_Q');axis([1,2000,-1.5,1.5]);figure(2);
subplot(2,2,1);plot(sI);title('I支路调制信号');axis([1,2000,-2,2]);
subplot(2,2,2);plot(sQ);title('Q支路调制信号');axis([1,2000,-2,2]);
subplot(2,2,3:4);plot(s);title('MSK调制信号');axis([1,4000,-2,2]);figure(3);
subplot(3,1,1);plot(s);title('MSK调制信号');axis([1,4000,-2,2]);
subplot(3,1,2);plot(y_n);title('MSK调制信号s通过瑞利信道后的信号y_n');axis([1,4000,-2,2]);
subplot(3,1,3);plot(y_n0);title('MSK调制信号s通过高斯信道后的信号y_n0');axis([1,4000,-2,2]);figure(4);
subplot(3,2,1:2);plot(y);title('y_i通过带通滤波器后的信号y');axis([0,4000,-2,2]);
subplot(3,2,3);plot(x1_I);title('y与恢复载波c1相乘后的信号x1_I');axis([0,2000,-2,2]);
subplot(3,2,4);plot(x1_Q);title('y与恢复载波c2相乘后的信号x1_Q');axis([0,2000,-2,2]);
subplot(3,2,5);plot(x2_I);hold on;plot(e_I);
legend('x1_I通过低通滤波器后的信号x2_I','I支路基带信号e_I');axis([0,2000,-2,2]);
subplot(3,2,6);plot(x2_Q);hold on;plot(e_Q);
legend('x1_Q通过低通滤波器后的信号x2_Q','Q支路基带信号e_Q');axis([0,2000,-2,2]);figure(5);
subplot(3,2,1);stem(d_I);
title('x2_I经过判决后得到的01序列d_I');axis([1,10,0,1]);
subplot(3,2,2);stem(d_Q);
title('x2_Q经过判决后得到的01序列d_Q');axis([1,10,0,1]);
subplot(3,2,3:4);stem(d0);hold on;stem(a_cf,'*');
legend('d_I和d_Q并串变换后得到的01序列d0','原始经差分编码后的01序列a_cf');axis([1,20,0,1.5]);
subplot(3,2,5:6);stem(d);hold on;stem(a,'*');
legend('d0经差分解码后得到的解调01信息比特d','原始01信息比特a');axis([1,20,0,1.5]);

子程序

function h=fun_tiqu(x,L)
%提取出信息比特
%x为输入信号,L为信号的码元长度
for i=1:length(x)/L;C=x((i-1)*L+1:i*L);t=sum(C);if t>=0h(i)=1;elseh(i)=0;end
end

MSK误码率

clear all;
close all;
%误码率曲线的绘制
SNR=1:1:20;%信噪比变化范围
snr=10.^(SNR/10);%将信噪比转化成直角坐标
N=1000000;%仿真点数
M=1;%进制数
x=randi([0,1],1,N); %产生随机信号
y=mskmod(x,M);%调用matlab自带的msk调制函数
plot(y);
for i=1:length(SNR);N0=1/2/snr(i);%计算噪声功率N0_dB=10*log10(N0);%将噪声功率转换为dBWni=wgn(1,N,N0_dB);%产生高斯噪声h=raylrnd(1/sqrt(2),1,N);%产生瑞利信号yAn=y+ni;%通过高斯信道yA=mskdemod(yAn,M);%调用matlab自带的msk解调函数bit_A=length(find(x~=yA));%统计错误比特数 BPSK_s_AWGN(i)=bit_A/N;%计算误码率yRn=y.*h+ni;%通过瑞利信道yR=mskdemod(yRn,M);%调用matlab自带的msk解调函数bit_R=length(find(x~=yR));%统计错误比特数BPSK_s_Ray(i)=bit_R/N;%计算误码率
end
BPSK_t_AWGN=1/2*erfc(sqrt(snr));%AWGN信道下MSK理论误码率
BPSK_t_Ray=1/2*(1-sqrt((snr)./(1+snr)));%Rayleigh信道下MSK理论误码率%绘制图形
figure;
semilogy(SNR,BPSK_s_AWGN,'-k*');hold on;
semilogy(SNR,BPSK_t_AWGN,'-go');hold on;
semilogy(SNR,BPSK_s_Ray,'-b*');hold on
semilogy(SNR,BPSK_t_Ray,'-ro');grid on;
axis([-1,20,10^-4,1]);
legend('AWGN仿真','AWGN理论','瑞利仿真','瑞利理论');
title('BPSK误码性能分析');
xlabel('信噪比(dB)');ylabel('BER');

MSK调制解调和误码率相关推荐

  1. msk 频偏_基于MSP430的MSK调制解调实现.doc

    PAGE 哈尔滨工程大学本科生毕业论文 基于MSP430的MSK调制解调实现 院 (系):信通学院 专 业:电子信息工程 学 号学 生 姓 名:杜兆龙 指 导 教 师:罗天放 副教授 2008年6月 ...

  2. m基于FPGA的MSK调制解调系统verilog开发,并带FPGA误码检测模块和matlab仿真程序

    目录 1.算法描述 2.仿真效果预览 3.Verilog核心程序 4.完整FPGA 1.算法描述 整个模型的基本框图为 软件无线电是现代通信技术的重要研究领域和发展方向,目前发展迅速.快速发展的软件无 ...

  3. QPSK调制解调和误码率

    课程设计作业 QPSK调制解调 clear all; close all; %% %系统参数设计 T_start=0;%开始时间 T_stop=20;%截止时间 T=T_stop-T_start;%仿 ...

  4. matlab实现MSK调制解调

    文章目录 一.要求 二.设计 三.代码 四.结果 五.结论 一.要求 画出MSK信号产生的信息.I路.Q路信号对比图以及接收端解调的信息恢复的对比图. 二.设计 1.MSK调制 2.MSK解调 三.代 ...

  5. 16QAM调制解调系统误码率和星座图的matlab仿真

    目录 一.理论基础 二.核心程序 三.仿真结论 一.理论基础 16QAM全称是​正交幅度调制​,英文Quadrature Amplitude Modulation的缩略语简称,意思是正交幅度调制,是一 ...

  6. ASK,FSK和PSK调制解调的误码率matlab仿真

    目录 1.算法仿真效果 2.MATLAB源码 3.算法概述 4.部分参考文献 1.算法仿真效果 matlab2022a仿真结果如下: <

  7. msk调制 vhdl_MSK调制解调技术的原理及应用分析

    MSK调制解调技术的原理及应用分析 姓名:莫波微班级:05921001 学号:1120101489 MSK是数字调制技术的一种.数字调制是数字信号转换为与信道特性相匹配的波形的过程.调制过程就是输入数 ...

  8. matlab仿真软件 高阶调制,高阶差分幅度相移键控调制解调系统及仿真

    摘要: 本文研究了高阶差分幅度相移键控调制解调(MDASPK)的算法.MDAPSK与具有高频谱利用率已实用化的QAM相比,MDAPSK是由差分幅度(DASK)和差分相移键控(DPSK)结合的一种调制方 ...

  9. 4fsk调制matlab_数字调制解调技术的MATLAB与FPGA实现

    <数字调制解调技术的MATLAB与FPGA实现>包含2个版本.Xilinx/VHDL版的设计平台为ISE14.7/VHDL,配套开发板为CXD301:Altera/Verilog版的设计平 ...

最新文章

  1. xml解析: dom4j
  2. report things that go wrong
  3. 【PL/SQL】学习笔记 (7)光标的属性,一个会话中打开光标数的限制
  4. java的(PO,VO,TO,BO,DAO,POJO)解释1
  5. 房贷月供4300,10万够买支付宝定期,一年利息能否抵一个月月供?
  6. window下远程监控linux下tomcat的jvm
  7. 某一年某一年_一年关于开放组织的对话
  8. int基本类型变成Integer包装类
  9. 服务器503能自动恢复吗,服务器出现503错误的原因与解决方法
  10. JAVA,JSP,Servlet获取当前工程路径-绝对路径
  11. VS2015编译VS2013工程文件出错
  12. VFP9 连接mysql代码示例
  13. 基于ZigBee的城市照明监控系统网关节点的软硬件设计
  14. ubuntu电源管理
  15. 蒟蒻的网络流24题解题记
  16. Python微信公众号教程基础篇——收发文本消息
  17. thinkphp5学习路程 三 数据库操作
  18. Verilog分频器的设计(6分频和1.5分频)
  19. 叔本华的《人生的智慧》感悟
  20. 三分法解决假币问题(JAVA)

热门文章

  1. 悼念乔布斯---他的产品改变了世界,思想影响了一代人,三个故事,勉励大家
  2. 云盒子携手中交一公局,打造工程企业办公新模式
  3. java内存模型之先行发生原则
  4. leetcode算法题-有效字母的异位词-C++
  5. HTTP代理,代理服务器
  6. 安装MySQL和配置MySQL主从遇到的坑合集
  7. 北京工业大学2021计算机分数线,北工大2021年北京市本科普通批提档分数线发布!...
  8. python 把数字转换成中文大写
  9. windows U盘脱机状态处理方式
  10. 文献精读-PSEP-生物质和PE塑料的共热解MD以及DFT模拟