%implementation of MSK transmitter and Receiver
clc;
clear all;
close all;
N=10000;
fac=8;
L=1;
b=rand(1,N);
% dec(b>=0.5)=-1;
% dec(b<0.5)=1;
dec = randsrc(1,N);
theta=0;
for x=1:N
A = dec(1,x) + theta;
bn(1,x) = exp(j*pi*A/2);
theta = theta + dec(1,x);
end
d(1:8:N*fac)=bn;
d = [d zeros(1,fac-1)];
t=0:1/fac:2-1/fac;
h=sin(pi*t/2);
e_h = h*h';
ene =sum(h.*h);
h1=h./sqrt(ene);
s1=conv(d,h1);
s1=s1(9:end-7);
%----------------------------------------------------------------
%MSK demodulation-viterbi algorithm
%----------------------------------------------------------------
mem_elem=1; blk_size=N;
no_state=2^mem_elem;
load past_state_tab.mat;
load next_state.mat;
load metind.mat;
path_table=zeros(no_state,blk_size);
metric_table=zeros(no_state,blk_size);
metrics=zeros(no_state,1);
k1= 1;
% SNRdiff = 10*log10(2);
SNRa = 5; SNRb = 15;
for SNRdB = SNRa : 1: SNRb
SNRdB
noise_var = 0.5*10^(-SNRdB/10);
noise = sqrt(noise_var)*complex(randn(1,length(s1)),randn(1,length(s1)));
bits_noise = s1 + noise;
%implementation of matched filter at receiver
r_0=conv(bits_noise,h1);
r0_=r_0(9:end-7);
r0 = r0_(1:fac:end);
r1 = [0 r0];
state=0;
metric1=0;
for m=1:mem_elem
ind=next_state(state+1,:);
ind=reshape(ind',2^m,1);
path_table(ind+1,m)=reshape(repmat(state',2,1),2^m,1);
a1=repmat(r0(1,m),2^m,1);
d1=repmat(r1(1,m),2^m,1);
[value] = metric_msk(state,a1,d1,m);
metric1=reshape((repmat(metric1,1,2))',2^m,1);
metric1=metric1+value;
metrics(ind+1)=metric1;
state=ind;
end
state = [0 1];
for ind_bit=mem_elem+1:blk_size
a1=repmat(r0(1,ind_bit),4,1);
d1=repmat(r1(1,ind_bit),4,1);
[value] = metric_msk(state,a1,d1,ind_bit);
metrics=repmat(metrics,1,2);
metrics=reshape(metrics',2*no_state,1);
metrics=metrics+value;
m1=metrics(metind+1);
path_table(:,ind_bit)=past_state_tab(:,1).*(m1(:,1)>=m1(:,2)) + past_state_tab(:,2).*(m1(:,1)<m1(:,2));
metric_table(:,ind_bit)=m1(:,1).*(m1(:,1)>=m1(:,2)) + m1(:,2).*(m1(:,1)<m1(:,2));
metrics=m1(:,1).*(m1(:,1)>=m1(:,2)) + m1(:,2).*(m1(:,1)<m1(:,2));
end
[val index]=max(metrics);
start_init=index-1;
traceback_state(blk_size+1)=start_init;
for m=length(path_table):-1:1
start_init=path_table(start_init+1,m);
traceback_state(m)=start_init;
end
state_next=next_state(traceback_state+1,:);
for m=1:blk_size
bits_rx(m)=(traceback_state(m+1)==state_next(m,2));
end
bits_rx=1-2*bits_rx;
ber(k1) = length(find(bits_rx-dec))/(N)
tbpsk(k1) =(1/2)* erfc(sqrt(10^(SNRdB/10)));
k1 = k1+1;
end
% figure;
semilogy(SNRa:1:SNRb, ber,'b');
hold on;
semilogy(SNRa:1:SNRb,tbpsk,'r');
title('BER curve');
grid on;
MSK.rar_MATLAB msk_msk_msk matlab_msk receiver
版权申诉
139 浏览量
2022-09-19
19:57:32
上传
评论
收藏 3KB RAR 举报
小贝德罗
- 粉丝: 70
- 资源: 1万+
最新资源
- RAG技术知识图谱概览
- VMware Workstation功能强大的桌面虚拟计算机软件
- 中文命名实体识别,采用bilstm+crf模型基于Pytorch实现
- PowerGREP V5.3.3 Retail
- 美赛数学建模算法-使用Matlab实现灰色系统建模GreySystem-国赛-题解.zip
- 基于albert-bilstm-crf架构利用keras框架实现NER
- RegexMagic V2.13.1 Retail
- python-3.6.5-macosx 安装包
- 美赛数学建模算法-使用Matlab实现图论GraphTheory-包括求最短路径-国赛-题解.zip
- RegexBuddy v4.14.1 Retail
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈