clear all;
clc;
%参数
%number码元个数 rb码元速率 fc载波频率 number1每个码元采样点数 fs采样频率
%tb每个码元持续时间
%采样频率要大于二倍的载波频率才可以显示
number=25;rb=50;fc=200;tb=1/rb;number1=100;fs=rb*number1;
%基带码元
a=rand(1,number);
for i=1:length(a)
if a(i)>0.5;
a(i)=1;
else a(i)<=0.5;
a(i)=-1;
end
end
%a=[-1,-1,1,-1,1,1,1,-1,1,1,1,-1,-1,-1,1,1,1,-1,1,1,-1,-1,1,1,-1];
%a=[1,-1,1,-1,-1,1,1,-1,1];
%差分编码
b=zeros(1,length(a));
b(1)=a(1);
for i=2:length(a)
if a(i)==-1
b(i)=-b(i-1);
else a(i)==1;
b(i)=b(i-1);
end
end
%----------------方法一和方法二得到的结果一样-------------------------
%---------------一个是利用相位,按照公式直接计算---------------------
%-------------另一个是利用cos之后和差分编码之间的关系来计算------------
%--------------第三个计算没有归零,查找原因--------------------------------
%---------------解答:初始相位不为零导致出现I和Q不归零----------------------
% %%-------------------------------------------------------------------------
% %方法一:按照MSK流程进行调制
% 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(c); %I(k)
% Q=a.*cos(c); %-Q(k)
%%-------------------------------------------------------------------------
% %%-----------------------------------------------------------------------
% %方法二:并串转换
% I(1)=1;
% for i=1:2:length(a)
% Q(i)=b(i);
% Q(i+1)=b(i);
% end
% for i=2:2:length(a)
% I(i+1)=b(i);
% I(i)=b(i);
% end
% %%-----------------------------------------------------------------------
% --------方法一和方法二共用的一部分-----------------------------------------
%扩展码元,每个码元采样点数为number1,一共number个码元
% I1=zeros(1,number*number1);
% Q1=zeros(1,number*number1);
% for i=1:number;
% I1((i-1)*number1+1:i*number1)=I(i);
% Q1((i-1)*number1+1:i*number1)=Q(i);
% end
%
% %加权系数
% t1=1/fs:1/fs:length(a)*tb;
% I=I1.*cos(pi*t1/2/tb);
% Q=Q1.*sin(pi*t1/2/tb);
%--------------------------------------------------------------------------
%--------------------------------------------------------------------------
%方法三:直接计算相位变量
for i=1:number1
data_sample(i:number1:number*number1)=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');
%%-------------------------------------------------------------------------
figure;
subplot(2,1,1);plot(I);grid;
subplot(2,1,2);plot(Q);grid;
multi=4;
I=interp(I,multi);
Q=interp(Q,multi);
% figure;
% subplot(2,1,1);plot(Q);grid;
% subplot(2,1,2);plot(I);grid;
t=1/fs:1/fs:length(I)*1/fs;
I=I.*cos(2*pi*fc*t);
Q=Q.*sin(2*pi*fc*t);
out=I-Q;
figure;
subplot(3,1,1);plot(I);axis([0,length(I)+1,-2,2]);grid;
subplot(3,1,2);plot(Q);axis([0,length(Q)+1,-2,2]);grid;
subplot(3,1,3);plot(out);axis([0,length(out)+1,-2,2]);grid;
- 1
- 2
- 3
- 4
前往页