www.pudn.com > MSKxiangwei.rar > MSKxiangwei.m


clear 
clc 
fs=400; 
fc=3200; 
Ts=1/fs; 
source=round(rand(1,20));%产生0.1随机序列 
for i=1:length(source) 
    if source(i)==0 
source(i)=-1; 
    end; 
end; 
%-----------------产生随机的+、-1的双极性码-------------------------- 
N=length(source); %码元向量长度 
n=1;%设定初始值 
p0=0;%设定相位标记初值 
p2=zeros(1,N); 
m=2;%设定初始值 
K=1:N; 
while n<=N %开始对码元逐个调制   
t=(n-1)*Ts:Ts/19:n*Ts;%限定在Ts内时间的取样 
CI1=cos(2*pi*fc*t+2*pi*fc*(n-1)*Ts);%实现fc振荡(在一个周期内) 
SI1=sin(2*pi*fc*t+2*pi*fc*(n-1)*Ts);%实现移相90的FC振荡(在一个周期内) 
CI2=cos(1/2*pi*fs*t+1/2*pi*fs*(n-1)*Ts);%实现1/4fs振荡(在一个周期内) 
SI2=sin(1/2*pi*fs*t+1/2*pi*fs*(n-1)*Ts);%实现移相90的1/4fs振荡(在一个周期内) 
CI=CI1.*CI2;%信号相乘 
SI=SI1.*SI2;%信号相乘 
CI0=SI1.*CI2; 
SI0=CI1.*SI2; 
Cos_t=CI-source(n)*SI;%Cos(wct+an*wst+pi(o))=cos(Wct+an*Wst) 
%Sin_t=CI0+source(n)*SI0;%Cos(wct+an*wst+pi/2(3/2pi))=sin(Wct+an*Wst) 
%----------------------调制的初始设定------------------------------- 
if p0==0; 
y((n-1)*20+1:n*20)=Cos_t; 
if source(n)==1; 
p0=0; %保持原标记值不变 
else  %如果值为-1的时候 
p0=1; %改变相位标记值 
end 
elseif p0==1; 
y((n-1)*20+1:n*20)=-Cos_t; 
if source(n)==1; 
p0=1; %保持原标记值不变 
else; %如果值为-1的时候 
p0=0; %改变相位标记值 
end 
end 
%------------------------------------------------------------------ 
%整个作图的实现方式:每次检测到+1的码元的时候,令下一个码元初始相位不变 
%当-1码元的时候,设定下一个码元初始相位取相反值(+\-cos之间变化) 
figure(1) 
subplot(3,1,1) 
title('调制信号') 
plot(t,y((n-1)*20+1:n*20))%画出调制信号的波形 
hold on; 
grid on; 
n=n+1;%实现连续取值 
end 
%-----------------------------画出附加相位图------------------------- 
while m<=N; 
    p2(1)=(pi/2)*source(1); 
     if source(m)==1; 
     p2(m)=p2(m-1)+pi/2; 
elseif source(m)==-1; 
    p2(m)=p2(m-1)-pi/2; 
end 
m=m+1; 
end 
figure(1) 
subplot(3,1,2); 
stem(K,source); 
title('数字信号source')%数字信号的表示 
figure(1) 
subplot(3,1,3); 
plot(K,p2); 
grid on; 
title('附加相位示意图');ylabel('附加相位值(弧度)');