ofdm误码率仿真代码_共享源代码之MSK仿真(1)
直接来干货!同学们一看就知道这个代码的分量了!!!
%%%%%%%%%%%%%%% MSK相干解调符号同步仿真程序 %%%%%%%%%%%%%
%%%%%%%%%%%% File: mskwaveform_search1andtrack_rel1.m %%%%%%%%%
%%%%%%%% date: 2009-07-08 author: haige nanjing research %%%%%
%%% 程序说明
% 本程序为mskwaveform_search1andtrack_sim1的升级版,改变了跟踪时的误码率计算方式,
% 使得跟踪不正确时可以不统计误码率指标。
% 程序采用时域捕获算法完成初始频偏估计和位同步估计,采用DDPLL和ad hoc feedback scheme完成载波恢复和位同步。
% 程序在位同步完成后进行载波恢复,载波恢复针对每个符号进行。
% 位跟踪环路完全采用gardner的环路结构,定时误差鉴别器采用内插点进行计算,环路滤波器的参数采用了理想二阶环的参数。
% 本地8倍的符号率,内抽出4个点。本算法要求在一个符号内至少抽取出4个采样点。
% 在程序在msk_timingtrk1_DDPLL_coh_rel3和msk_search1_rel2合并的基础上进行波形仿真。
% 本程序采用规范帧头和BTR码,输出软信息结果。threshold已经赋值。
%%% 仿真环境
% 信号源设置:含有帧标志,帧标志和信息都采用MSK调制。
% 采样速率:符号率的整数倍,奈奎斯特采样
% 采样偏差:0 载波偏差:可变 符号率: 2.4KHz
% BTR码采用1100序列,总共128比特,帧头42比特,000001010001110010101001100000101110010011。
% mil-std-188-182标准中600bps时,引导序列长284比特,1200bps时,引导序列长358比特,
% 由于采用soqpsk调制,1个符号2比特。
clear all;
close all;
%%***************** 程序主体 ***********************%%
format long;
%**************** commom parameter ******************
%%%************** 系统参数
sr = 2400; % Symbol rate
ml = 1; % Number of modulation levels
br = sr.*ml; % Bit rate
IPOINT = 8; % Number of oversamples
%%%************** 锁相环参数
damp =0.707;
Bp = 100;
tp = 1/sr;
Kp = 1;
Wp = 2*Bp/(damp+1/(4*damp));
alpha1 = 8*damp*Wp*tp/(Kp*(4+4*damp*Wp*tp+(Wp*tp)^2));
beta1 = 4*(Wp*tp)^2/(Kp*(4+4*damp*Wp*tp+(Wp*tp)^2));
%%%************** 位跟踪环参数
damp = 0.707;
Bd = 0.5;
td = 1/sr;
Kd = 1;
Wd = 2*Bd/(damp+1/(4*damp));
alpha2 = 2*damp*Wd*td;
beta2 = Wd^2*td^2;
%%%************** loop parameter
nloop = 1e2; % Number of simulation loops
%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%% 发射机部分 %%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%
%****************** BTR code and frame start *********************
frame_head_sample = [ 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 ]; % 32 bits
% frame_head_sample = [ 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 ];
% frame_head_sample = randint(1,32); % 32 bits
frame_head = [frame_head_sample frame_head_sample frame_head_sample frame_head_sample]; % BTR code all in all for 128 bits
detect_flag1 = [ 0 0 0 0 0 1 0 1 0 0 0 1 1 1 0 0 1 0 1 0 1 0 0 1 1 0 0 0 0 0 1 0 1 1 1 0 0 1 0 0 1 1]; % frame of start
%********************** data source ***********************
data = randint(1,5000);
%*********************** creat frame ***********************
frame = [randint(1,20) frame_head detect_flag1 data]; % 帧头前加装无用数据
len_frame = length(frame)-20; % Number of symbols that simulates in each loop
%************************** MSK modulation *************************
data_source = 2*frame - 1;
for k=1:IPOINT
data_sample(k:IPOINT:k+IPOINT*(length(data_source)-1)) = data_source;
end
phase = zeros(1,length(data_sample)+1);
ich = zeros(1,length(data_sample)+1);
qch = zeros(1,length(data_sample)+1);
for ii=2:length(data_sample)+1
phase(ii) = phase(ii-1) + pi/2*data_sample(ii-1)./IPOINT;
end
ich = cos(phase);
qch = sin(phase);
%%%************** Add timing offset
toffset = 5;
% 采样偏差造成的移位影响 (16*2.4e3+10)*4000/(16*2.4e3) = 4001
% (8*2.4e3+10)*4000/(8*2.4e3) = 4002 (8*2.4e3+5)*4000/(8*2.4e3) = 4001
ideal_samplefre = IPOINT*sr;
samplefre = ideal_samplefre + toffset;
offset_start = 1.0; %%% 采样偏差的起始时刻
time1 = ideal_samplefre/samplefre.*(offset_start:length(ich)+offset_start-1);
%%% 生成以IPOINT*sr采样频率采样的数据
ich_sample = interp1((1:length(ich)),ich,time1,'spline');
qch_sample = interp1((1:length(qch)),qch,time1,'spline');
%%%************** Add carrier frequency offset (assuming perfect tracking)
freoffset = 120; % 频偏
pha_offset = 0; % 相偏
%%%************** Generate complex signal
time = (0:length(ich_sample)-1)/IPOINT/sr;
% 基带信号用复信号的形式来表达
tra_sig = (ich_sample + j*qch_sample).*exp(j*(2*pi*freoffset.*time+pha_offset));
fprintf('%%设置起始位置偏差%5.2f 时钟偏差%dHz TLL噪声带宽%5.2f 频偏%5.2fHz PLL噪声带宽%5.2f 采样频率%d倍符号率 %d个符号循环%d次\n',(offset_start-1),toffset,Bd,freoffset,Bp,IPOINT,len_frame,nloop);
% fprintf('%%******************* 跟踪仿真结果 ******************* \n');
fprintf('%%\t信噪比\t误比特率\n');
当年的程序注释写的非常棒,因此就没有写算法文档。下一堂课给出接收机部分的内容!!!
20190217 完成初稿!
ofdm误码率仿真代码_共享源代码之MSK仿真(1)相关推荐
- 俄罗斯方块java代码_俄罗斯方块源代码
[c++]代码库#include #include #include #define CELL 20 #define ROWS 25 #define COLS 15 //升级所需分数值 #define ...
- java围棋代码_围棋源代码Java_Applet小程序
围棋源代码Java_Applet小程序 /*一个Java围棋程序源代码*/ import java.awt.*; import java.awt.event.*; import javax.swing ...
- python一箭穿心代码_一箭穿心源代码
#include #include // 提供 system() 函数 int main(void) { printf(" 送给你 - 亲爱的 \n"); printf(" ...
- 在Diamond编写仿真代码后,通过Modelsim进行仿真,无波形。
此处展示简单的与非门电路代码 1.设计文件代码 2.测试文件代码(testbench) 如截图所示,两处代码第一行都是AB_not_2, 即如果你所写的测试文件与设计文件的此处代码的名字不相同,那么进 ...
- python仿真图_基于Python的DTN仿真平台
基于 Python 的 DTN 仿真平台 姚建盛 ; 刘艳玲 ; 李淑梅 [期刊名称] <新型工业化> [年 ( 卷 ), 期] 2016(006)009 [摘要] 延迟容忍网络 (DTN ...
- matlab自带电机案例,MATLAB电机仿真精华50例,源代码
[实例简介] MATLAB电机仿真精华50例,源代码,MATLAB电机仿真精华50例,源代码,包括直流电机,异步电机,同步电机. [实例截图] [核心代码] MATLAB电机仿真精华50例,源代码 └ ...
- 51单片机DS18B20温度报警器proteus仿真设计_可调上下限
51单片机DS18B20温度报警器proteus仿真设计_可调上下限 (仿真+源码+原理图+报告) 原理图:Altium Designer 仿真版本:proteus 7.8 程序编译器:keil 4/ ...
- 51单片机汽车胎压大气气压测量仪仿真设计_数码管显示
51单片机汽车胎压大气气压测量仪仿真设计_数码管显示 (仿真+程序) 仿真原版本:proteus 7.8 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0018 目录标题 51 ...
- 初识OFDM(六):从零开始的OFDM误码率仿真
文章目录 初识OFDM(六):从零开始的OFDM误码率仿真 零.代码地址 一. 加性高斯白噪声对OFDM误码率的影响 1. 代码展示 2. 代码分析 fftshift和ifftshift 能量和信噪比 ...
最新文章
- .net的mvc的fw版本为4.5发布到阿里云【云虚拟主机】上.
- 「知识表示学习」专题论文推荐 | 每周论文清单
- MFC中混合使用Duilib制作界面
- springboot指定首页(静态资源导入)
- IOS疯狂基础之GIF图片的显示
- php推送mip示例,首页—mip推送软件—首页
- 嵌入式Linux环境变量如何参与程序运行
- linux平台 oracle 数据库 安装文档
- Java基础面试题集(二)
- 【图像隐写】基于matlab GUI变换域的可逆数字水印系统设计【含Matlab源码 1813期】
- grub.conf解析
- oracle12 升级 01017,客户端登录Oracle 12.2服务器报ORA-01017的解惑
- Adobe Dreamweaver的使用教程
- 创建Date对象的几种方式
- iPhone屏幕尺寸、逻辑分辨率、物理分辨率、像素密度 (2018)
- 陈欧:创业是最美好的生活方式
- 财务金额转换:小写金额转换成大写算法
- 百度地图 地图级别 是什么意思
- 禁止 input 自动填充
- 在虚拟机端搭建lamp和通过docker技术在云服务器搭建lamp环境
热门文章
- ASP.NET 页面验证cookie
- 汇编指令:push、pop
- 《 Linux的安装和入门 》
- 企业管理软件解决方案 出售 :针对华东区中小企业订单仓储管理流程
- angularjs html压缩,Angularjs 依赖压缩及自定义过滤器写法
- 微课--Python使用tkinter和SQLite编写通信录管理程序(21分钟)
- Python花式编程案例集锦(8):判断吉祥数字
- php适配器设计模式,螃蟹学PHP设计模式之适配器模式
- python装饰器property_python装饰器: @property
- 高通的快充协议_高通QC5.0快充发布:百瓦级时代,高通被国产厂商牵着鼻子走了?...