• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

MSK调制研究以及MATLAB实现

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

MSK调制MATLAB仿真程序
MSK为相位连续的FSK调制,其基本原理如图所示:

方案一:按照上图的流程编写代码:

根据上图a和d两组码元的关系,不难看出这一部分应属于差分编码,在调制系统中,有两类调制需要用到,一个是DPSK,另一个就是MSK,仔细观察两种调制的关系,可以发现,不是同一种差分编码,而且好多资料里也写的是MSK差分编码是a(i)和d(i-1)异或。其实不是这样,正确关系应该是d(1)=a(1);d(i)是a(i)和d(i-1)同或结果。这里可以去书上查看相应a和d组码元,自己计算一下就明白了。

%方法一:计算相位变量
c=zeros(1,length(a));
c(1)=0;
for i=2:length(a)
if a(i)==a(i-1)
c(i)=c(i-1);
else a(i)~=a(i-1);
c(i)=c(i-1)+(a(i-1)-a(i))*((i-1)pi/2);
end
end
I=cos©; %I(k)
Q=a.cos©; %-Q(k)
%扩展码元,每个码元采样点数为number1,一共number个码元
I1=zeros(1,number
number1);
Q1=zeros(1,number
number1);
for i=1:number;
I1((i-1)number1+1:inumber1)=I(i);
Q1((i-1)number1+1:inumber1)=Q(i);
end

%加权系数
t1=1/fs:1/fs:length(a)tb;
I=I1.cos(pit1/2/tb);
Q=Q1.sin(pit1/2/tb);
I和Q的波形如图所示:

然后进行中频搬移即可:
multi=4;
I=interp(I,multi);
Q=interp(Q,multi);
t=1/fs:1/fs:length(I)1/fs;
I=I.cos(2pi
fc
t);
Q=Q.sin(2pifct);
out=I-Q;

方案二:利用ak和相位的联系,如下图:

for i=1:number1
data_sample(i:number1:numbernumber1)=a;
end
%计算相位
phase=zeros(1,number
number1);
phase(1)=0;%phase(1)=data_sample(1)pi/2/number1;
for i=2:number
number1
phase(i)=phase(i-1)+data_sample(i-1)pi/2/number1;
end
%phase=phase+(0-phase(1));
I=cos(phase);
Q=sin(phase);
[r1,r2]=fen(a);
r(1)=-r2
pi;
for i=2:(r1+r2)2+1
r(i)=-r2
pi+(pi/2)(i-1);
end
figure;
subplot(2,1,1);stem(a);axis([0,length(a)+1,-2,2]);grid;
subplot(2,1,2);plot(phase);grid;
set(gca,‘YTick’,-r2
pi:pi/2:r1*pi);
set(gca,‘YTickLabel’,{r/pi});
title(‘相位图’);ylabel(‘pi’);
结果如图所示:

然后再进行调制。
关于这一部分,有的资料上计算相位phase时,初始化令phase(1)=data_sample(1)*pi/2/number1;
我仿真之后发现是有误差的,I和Q路的图像也是有误差,经过仔细检查发现,这里phase(1)=0,也就是第一个相位值应该为1。具体可以自己仿真一下试试。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Rust交叉编译Mac编译Linux/Windows平台发布时间:2022-07-18
下一篇:
[Rust] 命名习惯发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap