📄 system_upsend_1.m
字号:
%※ 数 据 发 送 端 ※%输出OQPSK信号
%**************************************************************************
clc;
clear all;
close all;
%*** 产生随机数字比特流x***%
amplitude=1;
longth=16*8;
sourcedata=amplitude*randsrc(1,longth,[0,1]);%长为100的随机数
%*** 将sourcedata进行串并变换,分成sourcedataI、sourcedataQ两路 ***%
sourcedataI=zeros(1,(ceil(longth/6))*3);%ceil(x)为取整,即大于或等于x的整数
sourcedataQ=zeros(1,(ceil(longth/6))*3);
for var1=1:length(sourcedata)/2;
sourcedataI(1,var1)=sourcedata(1,2*var1-1); %奇数点
sourcedataQ(1,var1)=sourcedata(1,2*var1); %偶数点
end;
%***进行3-8walsh码正交变换***%
walshdataI=walshcode(sourcedataI);
walshdataQ=walshcode(sourcedataQ);
%将walsh码输出数据进行spreadtimes倍扩展以备扩频
spreadtimes=4;
for var2=1:length(walshdataI)
var3=1:spreadtimes;
walshdata96I(1,(var2-1)*spreadtimes+var3)=walshdataI(1,var2);
walshdata96Q(1,(var2-1)*spreadtimes+var3)=walshdataQ(1,var2);
end
%产生42位扩频长码
longPNcode=longcode(length(walshdata96I));
DSSoutdataI=mod(walshdata96I+longPNcode,2);
DSSoutdataQ=mod(walshdata96Q+longPNcode,2);
%产生15位扩频短码
shortPNcode=shortcode(length(walshdata96I));
shortPNoutI=mod(DSSoutdataI+shortPNcode(1,:),2);
shortPNoutQ=mod(DSSoutdataQ+shortPNcode(2,:),2);
%变为双极性码,0->1,1->-1
shortPNout1I=-2*(shortPNoutI-0.5);
shortPNout1Q=-2*(shortPNoutQ-0.5);
%%
%基带滤波和OQPSK调制
Rb=819200;%码元速率819.2k
k=1; %一个码元间隔包括1个载波周期
k2=8;
fc=k*Rb; % 载波频率,
fs=fc*k2; % 信号采样率
x_size=k*k2; % 码片采样率
x_length=length(shortPNout1I);
%基带滤波
filtout_I= rcosflt(shortPNout1I,1,x_size,'fir',0.2);%利用现成的升余弦函数
filtout_Q= rcosflt(shortPNout1Q,1,x_size,'fir',0.2);
filtoutI=filtout_I(2.5*x_size+1:x_length*x_size+2.5*x_size)';
filtoutQ=filtout_Q(2.5*x_size+1:x_length*x_size+2.5*x_size)';
%将i路提前半个码元,相当于将q路延迟半个码元
filtoutforeI=zeros(1,length(filtoutI));
filtoutforeI(1:length(filtoutI)-x_size/2)=filtoutI(x_size/2+1:length(filtoutI));
%产生载波
carry_I(1:x_length*x_size)=cos(2*pi*fc*(1:x_length*x_size)/fs+pi/4);
carry_Q(1:x_length*x_size)=sin(2*pi*fc*(1:x_length*x_size)/fs+pi/4);
%BPSK调制
%s_i=filtoutI.*carry_i;
sfore_I=filtoutforeI.*carry_I;
s_Q=filtoutQ.*carry_Q;
%输出QPSK信号
%sqpsk=s_i+s_q;
soqpsk=sfore_I+s_Q;
save send_data3
%%
figure(1)
subplot(3,1,1)
plot(filtoutforeI(1:20*x_size))
grid on
title('I路码元信号')
subplot(3,1,2)
plot(filtoutQ(1:20*x_size))
title('Q路码元信号')
grid on
subplot(3,1,3)
plot(carry_I(1:20*x_size))
title('载波')
grid on
figure(2)
subplot(3,1,1)
plot(sfore_I(1:20*x_size))
grid on
title('I路BPSK调制信号')
subplot(3,1,2)
plot(s_Q(1:20*x_size))
title('Q路BPSK调制信号')
grid on
subplot(3,1,3)
plot(soqpsk(1:20*x_size))
title('OQPSK调制信号')
grid on
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -