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

📄 filer_qpsk4.m

📁 cdma 系统级仿真
💻 M
字号:
%比较两个滤波器,升余弦滤波器+PSK调制
%以码元速率1.2288M为例,已生成QPSK和OQPSK信号,本文件研究滤波器频谱,
clc;
clear all;
close all;
%生成随机数
x_length=1000;                       %  信息码元个数
Rb=800000;%码元速率819.2k
k=1;                %一个码元间隔包括1个载波周期/2
k2=8;
fc=k*Rb;                             %  载波频率,
fs=fc*k2;                             %  信号采样率
x_size=k*k2;
y=1:x_size;                         %  采样时间序列,每个码元采x_size点
x_i=randsrc(1,x_length,[-1,1]);%sign(rand(1,x_length)-0.5);       正负号函数sign,产生随机码
x_q=randsrc(1,x_length,[-1,1]);
for i=1:x_length
    baseband_i(1,1+(i-1)*x_size:i*x_size)=x_i(i);%将码元展宽x_size倍
    baseband_q(1,1+(i-1)*x_size:i*x_size)=x_q(i);%将码元展宽x_size倍
end
%将i路提前半个码元,相当于将q路延迟半个码元
basefore_i=zeros(1,length(baseband_i));
basefore_i(1:length(baseband_i)-x_size/2)=baseband_i(x_size/2+1:length(baseband_i));

%基带滤波
n=35;%滤波器阶数
shengyuxuian=myfilter(n,k2);
myfiltoutI=filter(shengyuxuian,1,baseband_i);
myfiltoutQ=filter(shengyuxuian,1,baseband_q);
myfiltoutforeI=filter(shengyuxuian,1,basefore_i);

%baseband_i(2,:)=filtoutI;
%baseband_q(2,:)=filtoutQ;

%产生载波
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调制
bas_i=baseband_i.*carry_i;
bas_q=baseband_q.*carry_q;
basfore_i=basefore_i.*carry_i;
%输出QPSK信号
basqpsk=bas_i+bas_q;
basoqpsk=basfore_i+bas_q;

%BPSK调制
mys_i=myfiltoutI.*carry_i;
mys_q=myfiltoutQ.*carry_q;
mysfore_i=myfiltoutforeI.*carry_i;
%输出QPSK信号
mysqpsk=mys_i+mys_q;
mysoqpsk=mysfore_i+mys_q;


%基带滤波
filtout_I= rcosflt(x_i,1,x_size,'fir',0.2);%利用现成的升余弦函数
filtout_Q= rcosflt(x_q,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));

%BPSK调制
s_i=filtoutI.*carry_i;
s_q=filtoutQ.*carry_q;
sfore_i=filtoutforeI.*carry_i;
%输出QPSK信号
sqpsk=s_i+s_q;
soqpsk=sfore_i+s_q;

%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
fft_baseband_q=abs(fft(baseband_q));             
fft_basoqpsk=abs(fft(basoqpsk));             
fft_myfiltoutI=abs(fft(myfiltoutQ));             
fft_mysoqpsk=abs(fft(mysoqpsk));             

fft_filtoutI=abs(fft(filtoutQ));             
fft_soqpsk=abs(fft(soqpsk));             

n=size(soqpsk,2);%FFT后数据点数目,d = size(X)返回二维向量,分别为矩阵X行数和列数
f=1:fs/n:fs;
m=2*n*fc/fs;       %此处m=fs/4=2fc
%%
 %图1,调制信号频谱图
figure(1)
subplot(3,2,1)
plot(f(1,1:m),fft_baseband_q(1,1:m))
title('基带信号频谱')
grid on
subplot(3,2,3)
plot(f(1,1:m),fft_myfiltoutI(1,1:m))
title('m滤波输出信号频谱')
grid on
subplot(3,2,4)
plot(f(1,1:m),fft_mysoqpsk(1,1:m))
title('调制信号频谱')
grid on

subplot(3,2,2)
plot(f(1,1:m),fft_basoqpsk(1,1:m))
title('基带信号频谱')
grid on
subplot(3,2,5)
plot(f(1,1:m),fft_filtoutI(1,1:m))
title('滤波输出信号频谱')
grid on
subplot(3,2,6)
plot(f(1,1:m),fft_soqpsk(1,1:m))
title('调制信号频谱')
grid on

%%
figure(2)
subplot(2,1,1)
plot(f(1,1:m),fft_myfiltoutI(1,1:m))
title('m滤波输出信号频谱')
grid on
subplot(2,1,2)
plot(f(1,1:m),fft_filtoutI(1,1:m))
title('滤波输出信号频谱')
grid on

⌨️ 快捷键说明

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