⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 system_upsend_1.m

📁 cdma 系统级仿真
💻 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 + -