资源简介
假定接收端已经实现载波同步,位同步
代码片段和文件信息
clc;
clear all;
%假定接收端已经实现载波同步,位同步(盲信号解调重点要解决的问题:载波同步(costas环(未见到相关代码)),位同步(Gardner算法(未见相关代码)),帧同步)
% carrier frequency for modulation and demodulation
fc=5e6;
%QPSK transmitter
data=5000 ; %码数率为5MHZ %原码个数
rand_data=randn(15000);
for i=1:data
if rand_data(i)>=0.5
rand_data(i)=1;
else
rand_data(i)=0;
end
end
%seriel to parallel %同时单极性码转为双极性码
for i=1:data
if rem(i2)==1
if rand_data(i)==1
I(i)=1;
I(i+1)=1;
else
I(i)=-1;
I(i+1)=-1;
end
else
if rand_data(i)==1
Q(i-1)=1;
Q(i)=1;
else
Q(i-1)=-1;
Q(i)=-1;
end
end
end
% zero insertion ,此过程称为成形。成形的意思就是实现由消息到波形的转换,以便发射,脉冲成形应该是在基带调制之后。
zero=5; %sampling rate 25M HZ 明白了,zero为过采样率。它等于 采样率fs/码速率。
for i=1:zero*data % 采样点数目=过采样率*原码数目
if rem(izero)==1
Izero(i)=I(fix((i-1)/zero)+1);
Qzero(i)=Q(fix((i-1)/zero)+1);
else
Izero(i)=0;
Qzero(i)=0;
end
end
%pulse shape filter, 接着,将进行低通滤波,因为 随着传输速率的增大,基带脉冲的频谱将变宽
%如果不滤波(如升余弦滤波)进行低通滤波,后面加载频的时候可能会出现困难。
%平方根升余弦滤波器
% psf=rcosfir(rfn_tratefs‘sqrt‘) rate:过采样率,rf:滚降因子,n_t:滤波器阶数,fs:采样率
%用在调制或发送之前,用在解调或接受之后,用来降低过采样符号流带宽并不引发ISI(码间串扰)
NT=50;
N=2*zero*NT; % =500
fs=25e6;
rf=0.1;
psf=rcosfir(rfNTzerofs‘sqrt‘);% psf大小为500
Ipulse=conv(Izeropsf);
Qpulse=conv(Qzeropsf);
%为什么数字信号传输也要过采样,成形滤波?
%答:过采样的数字信号处理起来对低通滤波器的要求相对较低,如果不过采样,滤波的时候滤波器需要很陡峭,指标会很严格
%成形滤波的作用是保证采样点不失真。如果没有它,那信号在经过带限信道后,眼图张不开,ISI非常严重。成形滤波的位置在基带调制之后。
%因为经成形滤波后,信号的信息已经有所损失,这也是为避免ISI付出的代价。换句话说,成形滤波的位置在载波调制之前,仅挨着载波调制。
%即:(发送端)插值(采样)-成形-滤波(LPF)-加载频(载波调制)-加噪声至(接收端)乘本振-低通-定时抽取-判决。
%modulation
for i=1:zero*data+N %采样点数目改变 (因为卷积的缘故)
t(i)=(i-1)/(fs); %这里因为假设载频与码速率大小相等,所以用载频fc乘以过采样率=采样率。
Imod(i)=Ipulse(i)*sqrt(2)*cos(2*pi*fc*t(i));
Qmod(i)=Qpulse(i)*(-sqrt(2)*sin(2*pi*fc*t(i)));
end
sum=Imod+Qmod;
%QPSK receiver
%demodulation
for i=1:zero*data+N
Idem(i)=sum(i)*sqrt(2)*cos(2*pi*fc*t(i));
Qdem(i)=sum(i)*(-sqrt(2)*sin(2*pi*fc*t(i)));
end
%matched filter
mtf=rcosfir(rfNTzerofs‘sqrt‘);
Imat=conv(Idemmtf);
Qmat=conv(Qdemmtf);
%data selection
for i=1:zero*data
Isel(i)=Imat(i+N);
Qsel(i)=Qmat(i+N);
end
%sampler %提取码元
for i=1:data
Isam(i)=Isel((i-1)*zero+1);
Qsam(i)=Qsel((i-1)*zero+1);
end
%decision threshold
threshold=0.2;
for i=1:data
if Isam(i)>=threshold
Ifinal(i)=1;
else
Ifinal(i)=-1;
end
if Qsam(i)>=threshold
Qfinal(i)=1;
else
Qfinal(i)=-1;
end
end
%parallel to serial
for i=1:data
if rem (i2)==1
if Ifinal(i)==1
final(i)=1;
else
final(i)=0;
end
else
相关资源
- matlab 0~9GUI手写模式识别,正确率挺高
- MATLAB完整GUI程序
- FSOA算法的代码实现MATLAB
- 图像预处理相关的matlab代码
- 改进的均值滤波matlab代码
- 利用MATLAB和Robot toolbox 做的一个简单的
-
机械臂simuli
nk运动模拟 - 脉振高频信号注入法电机仿真
- 聚焦多波束成像matlab
- 阵列扫描matlab
- MATLAB+信号处理超级学习手册-程序代码
-
matlab读xm
l文档 - TVP-VAR模型的MATLAB代码
- Matlab关于csi信道信息获取
- 基于matlab的车牌识别程序280698
- A星算法的路径规划MATLAB实现
- WGS-84坐标系转大地坐标系
- SATD算法Matlab代码
- 基于支持向量机的故障诊断
- 基于MATLAB软件GUI界面的可编程电音合
- TDOA算法matlab仿真代码
- 视频的车流量统计
- 基于Matlab的CDMA通信系统下行信道的仿
- matlab开发-SortinoRatio
- matlab开发-灰度图像的jpeg压缩
- matlab开发-永磁TDC并联电机数学模型
- matlab开发-3相SPWM整流器
- matlab开发-最大最小特征值组合
- matlab开发-Kilobotswarm控制Matlabarduino
- matlab开发-简单音频播放
评论
共有 条评论