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

📄 source_spread.m

📁 该程序的主要功能是实现QPSK调制的扩频信号源
💻 M
字号:
clear all;
%  PN码长1024
%  参数定义
%  产生的一帧数据长度32bit
%  信息速率4.5kbps
%  采样速率 4
%  滚将系数 1
%--------------原始数据(31位m序列补一位0)--------------------------------
data=[1 1 1 1 1 0 0 0 1 1 0 1 1 1 0 1 0 1 0 0 0 0 1 0 0 1 0 1 1 0 0 0];
data=[data data data];
%--------------数据成帧-----------------------------------
I=data(1:2:length(data));
Q=data(2:2:length(data));
%--------------差分编码------------------------------------
I_code_data(1)=I(length(I));                                            
Q_code_data(1)=Q(length(Q));
for i=2:1:length(I)
   if (and(I_code_data(i-1),Q_code_data(i-1))==0)
      I_code_data(i)=xor(I(i),I_code_data(i-1));
      Q_code_data(i)=xor(Q(i),Q_code_data(i-1));
   else
      I_code_data(i)=xor(Q(i),I_code_data(i-1));
      Q_code_data(i)=xor(I(i),Q_code_data(i-1));
   end;
end;
I_code_data=2*I_code_data-1;
Q_code_data=2*Q_code_data-1;
%--------------扩频序列生成-----------------------------------
clear i;
m1=[1,1,1,1,1,1,1,1,1,1];%初相
poly1=[0,0,1,0,0,0,0,0,0,1];%反馈多项式
m=zeros(1023,1);
N=1023;
for i=1:N
     m(i)=m1(10);
     if not(m(i))     %统计序列中零的个数,并将'0'改为'-1',以便计算其自相关值
         m(i)=-1;
     end
     temp1=xor(m1(10),m1(3));
     for j=10:-1:2
         m1(j)=m1(j-1);
     end
     m1(1)=temp1;
end
m=m';
m=[m 1];%1024位伪码中有513位1
%--------------扩频-----------------------------------------
I_spread_data=kron(I_code_data,m);
Q_spread_data=kron(Q_code_data,m);
%---------------将一位扩展为四位------------------------------
sample_ve=4;
extend=[1 1 1 1];
I_data_extend=kron(I_spread_data,extend);
Q_data_extend=kron(Q_spread_data,extend);
%---------------基带成形-------------------------
%%基带成形滤波器
%升余玹滤波成形
r=1;%滚降系数
Tb=1/(5400*1024);%5.4kbit/s,信号带宽5.529MHz
fs=sample_ve/Tb;%采样率22.2MHz
Ts=Tb/sample_ve;%采样时间间隔
t=(-6*Tb+0.5*Ts:Ts:6*Tb-0.5*Ts);  %  归一化离散值
h_t=(sin((1-r)*pi*t/Tb)+(4*r*t/Tb).*cos((1+r)*pi*t/Tb))./(pi*t/Tb.*(1-(4*r*t/Tb).^2));
%%成形
I_shaping=conv(I_data_extend,h_t);
Q_shaping=conv(Q_data_extend,h_t);
%%归一化
I_shaping0=I_shaping/max(abs(I_shaping));
Q_shaping0=Q_shaping/max(abs(Q_shaping));
I0=I_shaping0(65536+25:65536+25+65536-1);
Q0=Q_shaping0(65536+25:65536+25+65536-1);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -