最小频移键控MSK

最小频移键控MSK

基本原理

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

源代码

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%          最小频移键控MSK
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

clc;
clear all;
close all;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%               参数设置
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
N=10;          % 码元个数
count=100;     % 一个码元取100个点
n=N*count;     % 总的采样点数
fs=1e6;        % 采样频率
TB=1/fs*count; % 码元周期,一个码元持续的时间
fc=3/(4*TB);   % 载波频率fc=n/(4*TB), n=1,2,3...   f1=fc-1/(4TB)   f2=fc+1/(4TB)
t=0:1/fs:(n-1)/fs;



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%               信源
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% ak=2*randi([0,1],1,N)-1;%产生1,-1双极性序列
ak=[1,1,-1,1,-1,-1,1,1,-1,1];

for p = 1:N  % 内插
    AK(( (p-1)*count+1):( p*count) ) = ak(p);
end



%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%         差分编码    同或运算
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
bk(1)=1;  % 初值
 for p=2:N
        if ak(p-1)==-1 
            bk(p)=-bk(p-1);
        else
            bk(p)=bk(p-1);
        end
 end
bk=[bk(2:end) bk(1)];  % 左移一位
for p = 1:N  % 内插
    BK(( (p-1)*count+1):( p*count) ) = bk(p);
end

figure(1) 
subplot(211);
plot(t,AK);grid on 
xlabel('时间/s');ylabel('幅度');
title('基带信号ak波形');
subplot(212);
plot(t,BK);grid on 
xlabel('时间/s');ylabel('幅度');
title('差分信号bk波形');

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%              相位finek
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
finek(1)=0;  % 初始相位为0
for p = 2:N  
     finek(p)=finek(p-1)+(p-1)*pi/2*(ak(p-1)-ak(p)); %书上第一个元素是finek(0),但是计算机只能从1开始,所以是(p-1)*pi/2
     finek(p)=mod(finek(p),2*pi);
end
for p = 1:N  % 内插
    FINEK(( (p-1)*count+1):( p*count) ) = finek(p);
end
figure(2)
plot(t,FINEK,'r');grid on
xlabel('时间/s');ylabel('幅度');
title('finek');


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%          pk qk 两路信号
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
pk=cos(finek);
qk=ak.*(cos(finek));
for p = 1:N  % 内插
    PK(( (p-1)*count+1):( p*count) ) = pk(p);
    QK(( (p-1)*count+1):( p*count) ) = qk(p);
end
figure(3)
subplot(211);
plot(t,PK,'r');grid on
xlabel('时间/s');ylabel('幅度/V');
title('pk');
subplot(212);
plot(t,QK,'b');grid on
xlabel('时间/s');ylabel('幅度/V');
title('qk'); 


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%  pk*cos(pi/(2*TB)*t) qk*sin(2*pi*fc*tQ) 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

u=PK.*cos(pi/(2*TB)*t);  
v=QK.*sin(pi/(2*TB)*t);  
U=u.*cos(2*pi*fc*t);  %与载波相乘
V=v.*sin(2*pi*fc*t); 


figure(4)
subplot(211);
plot(t,U,'b');grid on
xlabel('时间/s');ylabel('幅度/V');
title('pk*cos(pi/(2*TB)*t)');grid on 
subplot(212);
plot(t,V,'g');grid on
xlabel('时间/s');ylabel('幅度/V');
title('qk*sin(2*pi*fc*tQ)');
 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%              MSK信号
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
MSK=PK.*cos(pi/(2*TB)*t).*cos(2*pi*fc*t)-QK.*sin(pi/(2*TB)*t).*sin(2*pi*fc*t);
Y=fftshift(fft(MSK));
L=length(Y);  
P=abs(Y)/L; 
f=(0:L-1)*fs/L-fs/2;  
figure(5)
subplot(211);
plot(t,MSK,'r');grid on
xlabel('时间/s');ylabel('幅度/V');
title('MSK信号时域波形');
subplot(212);
plot(f,P); grid on;
xlabel('频率/HZ');ylabel('幅度/V');
title('MSK的信号频谱图');

仿真结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值