📄 mska.m
字号:
clc;clear;
a=[1 -1 -1 1 1 1 -1 -1 -1 -1]; % 输入数据序列
N=length(a); % 序列长度
fa=zeros(1,N); % 初始化相位常数
fa(1)=0; % 将初始相位定为0
%-------------------求相位常数fa
for k=2:N
if a(k)==a(k-1)
fa(k)=fa(k-1);
else
fa(k)=fa(k-1)+(pi*k)/2;
end
end
Ik=cos(fa); % 同相分量的等效数据
Qk=-a.*cos(fa); % 正交分量的等效数据
fb=5; % 信道码元速率10bit/s
time=N/fb; % 码元持续时间
fs=3000; % 采样频率
t=1/fs:1/fs:time; % 采样时间
M=length(t);
%-----------------产生加权函数x,y
x=cos(pi*fb*t/2);
y=sin(pi*fb*t/2);
%------------------产生正交载波
fc=5; % 载波频率
x0=cos(2*pi*fc*t);
y0=sin(2*pi*fc*t);
for m=1:N
tim(m)=m/fb;
end % 每个码元的截止时间
%------------定义与二进制码元对应的时间序列
s=1;
s1=1;
Qkt=zeros(1,M);
Ikt=zeros(1,M);
at=zeros(1,M);
for m=1/fs:1/fs:time
if m>tim(s)
s=s+1;
end
if a(s)==1
at(s1)=1;
else
at(s1)=-1;
end
if Qk(s)==1
Qkt(s1)=1;
else
Qkt(s1)=-1;
end
if Ik(s)==1
Ikt(s1)=1;
else
Ikt(s1)=-1;
end
s1=s1+1;
end
Ikt2=Ikt.*x.*x0; % 同相分量
Qkt2=Qkt.*y.*y0; % 正交分量
msk=Ikt2+Qkt2; % 产生MSK信号
plot(t,Ikt2);subplot(311)
plot(t,Qkt2);subplot(312)
plot(t,msk);subplot(313)
%--------相干解调--------------------------
fc=50;
car1=cos(2*pi*fc*t);
car2=-sin(2*pi*fc*t); % 相干载波
up=msk.*car1;
down=msk.*car2;
syms kaa kab
kaa=int(up);
kab=int(down);
if t<=2*k*fs
a=1;
else
a=-1;
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -