📄 recieve_onsat_2.m
字号:
%※ 星上数据接收端 ※%先解扩后下采样后解调判决
%**************************************************************************
clc;
clear all;
close all;
load send_data3;
Rb=800000;%码元速率819.2k
k=1; %一个码元间隔包括1个载波周期/2
k2=8; %采样率
%正交下变频
%A/D模数变换
recievdataI=sfore_I;
recievdataQ=s_Q;
datalength=length(recievdataI);
%FFT分路
%*******解扩不解调************%
%产生42位扩频长码
longPNcode=longcode(datalength/x_size);
%DSSoutdataI=mod(walshdata96I+longPNcode,2);
%DSSoutdataQ=mod(walshdata96Q+longPNcode,2);
%产生15位扩频短码
shortPNcode=shortcode(datalength/x_size);
%长短码进行摸2加,生成本地扰码
despreadcodeI=mod(longPNcode+shortPNcode(1,:),2);
despreadcodeQ=mod(longPNcode+shortPNcode(2,:),2);
%变为双极性码,0->1,1->-1
despreadcode1I=-2*(despreadcodeI-0.5);
despreadcode1Q=-2*(despreadcodeQ-0.5);
%对本地扰码进行x_size倍采样
for i=1:datalength/x_size
despreadcode2I(1,1+(i-1)*x_size:i*x_size)=despreadcode1I(i);%将码元展宽x_size倍
despreadcode2Q(1,1+(i-1)*x_size:i*x_size)=despreadcode1Q(i);%将码元展宽x_size倍
end
%解扩
despreadout1I=recievdataI.*despreadcode2I;
despreadout1Q=recievdataQ.*despreadcode2Q;
%下采样,spreadtimes=4;
k3=spreadtimes*x_size;
for i=1:datalength/spreadtimes
demoduout12I(1,i)=despreadout1I(1+spreadtimes*(i-1));
demoduout12Q(1,i)=despreadout1Q(1+spreadtimes*(i-1));
end
%% **************解调*************%
%解调
fc1=fc*spreadtimes;
carry_I1(1:x_length*x_size/spreadtimes)=cos(2*pi*fc1*(1:x_length*x_size/spreadtimes)/fs+pi/4);
carry_Q1(1:x_length*x_size/spreadtimes)=sin(2*pi*fc1*(1:x_length*x_size/spreadtimes)/fs+pi/4);
demoduoutI=demoduout12I.*carry_I1;
demoduoutQ=demoduout12Q.*carry_Q1;
N=14;
Wn=1/16;
B = fir1(N,Wn);
demoduout1I=filter2(B,demoduoutI);
demoduout1Q=filter2(B,demoduoutQ);
%***********积分判决********%
% %下采样,x_size=8;
% for i=1:datalength/k3
% demoduout22I(1,i)=demoduout1I(x_size/2+x_size*(i-1));%将码元展宽x_size倍
% demoduout22Q(1,i)=demoduout1Q(x_size/2+x_size*(i-1));%将码元展宽x_size倍
% end
for i=1:datalength/k3
demoduout22I(1,i)=sum(demoduout1I(1+x_size*(i-1):x_size*i));%将码元展宽x_size倍
demoduout22Q(1,i)=sum(demoduout1Q(1+x_size*(i-1):x_size*i));%将码元展宽x_size倍
end
demoduout3I=-(sign(demoduout22I)-1)/2;
demoduout3Q=-(sign(demoduout22Q)-1)/2;
%*************星上交换**********%
%CWTDM复接,去下行调制器
%% *******************************%
figure(1)
subplot(4,1,1)
plot(despreadcode2Q)
%axis([0 k3*8 -1.5 1.5])
axis([0 k3*4 -1.2 1.2])
grid on
title('扩频码')
subplot(4,1,2)
plot(recievdataQ)
axis([0 k3*4 -1.2 1.2])
title('扩频输入信号')
grid on
subplot(4,1,3)
plot(despreadout1Q)
axis([0 k3*4 -1.2 1.2])
title('扩频输出信号')
grid on
subplot(4,1,4)
plot(demoduout12Q)
axis([0 x_size*4 -1.2 1.2])
title('下采样输出信号')
grid on
figure(2)
subplot(3,1,1)
plot(carry_Q1)
%axis([0 k3*8 -1.5 1.5])
axis([0 x_size*4 -1 1])
title('载波')
grid on
subplot(3,1,2)
plot(demoduoutQ)
axis([0 x_size*4 -1.2 1.2])
title('解调输出信号')
grid on
subplot(3,1,3)
plot(demoduout1Q)
axis([0 x_size*4 -1 1])
title('滤波输出信号')
grid on
%% *******************************%
figure(3)
subplot(2,1,1)
stairs(demoduout3Q)
%axis([0 k3*8 -1.5 1.5])
axis([1 4+1 -0.5 1.5])
grid on
title('解调输出信号')
subplot(2,1,2)
stairs(walshdataQ)
axis([1 4+1 -0.5 1.5])
title('扩频输入信号')
grid on
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -