MSK信号的表达式:
由于
可以得到:
由于
设定
参考前一篇文章可以得出
由于当k-1为偶数时即k为奇数时,附加相位不变,可以得出变化周期为2Ts;且当k为偶数时,附加相位与输入数据的差分相关。
(1)
(2)
当k为偶数时,附加相位与输入数据的差分相关。若输入数据,
不相同,
,
也不同,造成
不变, 可以得出
变化周期为2Ts;当k为奇数时由于附加相位不变,
与
、
相关,会出现变化。
由此可以看出、
有如下变化规律:
(1)变化周期为2Ts;
(2)变化起点不同为偶数、
为奇数。相差为Ts。
例如:
如下是MSK的调制框图
这里要说的是串并变换需要按照公式(1)、(2)计算得出,由一路信号变成两路信号,没有Ts的周期延迟。两路信号是同步的,由上面的分析可以看出,变化值时刻相差Ts是一种相位连续造成的现象。
这里面还有可以思考一个问题,a b p q 都是正负1;如果按照上述分析的p和q的规律,利用其它数据,特别的利用输入数据直接进行替换,那样生成的信号必定也是相位连续的MSK信号。
这样两路数据每符号持续两个周期Ts,q路延时Ts。当然替换后的信号也发生了变化。解调方式也需要发生变化。
这是修改的网上下载的一个代码:
需要的可以参考
n=100000;
count=100;
N=n/count; %N=100
r=rand(1,N-1);
for i=1:N-1
if (r(i)>=0.5)
r(i)=1;
else
r(i)=-1;
end;
end;
for i=1:n-count % ?9900??
R(i)=r(((i-1)-mod((i-1),count))/count+1);
end; %
a(1)=1;
for i=2:N
if r(i-1)==1 a(i)=-a(i-1);
else a(i)=a(i-1);
end;
end;
for i=1:n
A(i)=a(((i-1)-mod((i-1),count))/count+1);
end;
for i=1:N
if(mod(i,2))
l(i)=a(i);
l(i+1)=a(i);
else q(i)=a(i);
q(i-1)=a(i);
end;
end;
for i=1:N-1%输入数据为差分前数据
if(mod(i,2))
l(i)=r(i);
l(i+1)=r(i);
else q(i)=r(i);
q(i-1)=r(i);
end;
end;
for i=1:n
I(i)=l(((i-1)-mod((i-1),count))/count+1);
end;
for i=1:n
Q(i)=q(((i-1)-mod((i-1),count))/count+1);
end;
ts=0.0001;
Ts=ts*count;
fs=1/ts;
fc=5/(2*Ts);
t0=Ts*N-ts;
f=1/(4*Ts);
df=0.3;
tI=[-Ts:ts:t0-Ts];
tQ=[0:ts:t0];
tQ_R=[0:ts:t0-Ts];
c=2*pi*f;
u=I.*cos(c*tI);
v=Q.*sin(c*tQ);
U=u.*cos(2*pi*fc*tI);
V=v.*sin(2*pi*fc*tQ);
for i=count+1:n
W(i)=U(i)+V(i-count);
end;
figure
subplot(4,1,1);
plot(tQ_R,R,'k');
axis([-Ts,0.1,-2,2]);
grid on
subplot(4,1,2);
plot(tI,A,'k');axis([-Ts,0.1,-2,2]);
grid on
subplot(4,1,3);
plot(tI,I,'k');
axis([-Ts,0.1,-2,2]);
title('I');
grid on
subplot(4,1,4); plot(tQ,Q,'k');axis([-Ts,0.1,-2,2]);
title('Q');
grid on
figure
subplot(3,1,1);
plot(tI,U,'k');
axis([-Ts,0.1,-2,2]);
title('I路信号');
grid on
subplot(3,1,2);
plot(tQ,V,'k');
axis([-Ts,0.1,-2,2]);
title('Q路信号');
grid on
subplot(3,1,3);
plot(tI,W,'k');
axis([-Ts,0.1,-2,2]);
title('MSK');
grid on
关于MSK信号如何解调呢?
请关注下一篇。