📄 filer_psk3.m
字号:
%升余弦滤波器+PSK调制(单路)
%以码元速率1.2288M为例,滤波器基本调整完毕,频谱关系得到整理
clc;%清除命令窗口
clear all;%清除工作空间workspace,以释放内存
close all;
%生成随机数
%以下为QPSK调制
x_length=1000; % 信息码元个数
Rb=1228800/2;%码元速率1.2288M
k=1; %一个码元间隔包括1个载波周期/2
k2=16;
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=15;%滤波器阶数
%shengyuxuian=myfilter(n,fs/fc);
%filtoutI=filter(shengyuxuian,1,baseband_i);
filtout_I= rcosflt(x_i,1,x_size);%利用现成的升余弦函数
filtoutI=filtout_I(2.5*x_size+1:x_length*x_size+2.5*x_size)';
%baseband_i(2,:)=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;
%s_q=baseband_q.*carry_q;
%sfore_i=basefore_i.*carry_i;
%输出QPSK信号
%sqpsk=s_i+s_q;
%soqpsk=sfore_i+s_q;
%调制信号的付利叶变换
%fft_s_i=abs(fft(s_i));
%n=size(s_i,2); %FFT后数据点数目
%f=1:fs/n:fs;
%m=fc/fs*n*2; %此处m=fs/4=2fc
%基带信号的付利叶变换
fft_baseband_i=abs(fft(baseband_i(1,:)));
fft_filtoutI=abs(fft(filtoutI));
n=size(baseband_i,2);%FFT后数据点数目,d = size(X)返回二维向量,分别为矩阵X行数和列数
f=1:fs/n:fs;
m=fc/fs*n*2; %此处m=fs/4=2fc
%图1,调制信号频谱图
figure(2)
subplot(2,1,1)
%plot(f(1,1:m),fft_s_i(1,1:m))
%title('信号频谱(BPSK)')
%grid on
%subplot(3,1,2)
plot(f(1,1:2*m),fft_baseband_i(1,1:2*m))
title('基带信号频谱')
grid on
subplot(2,1,2)
plot(f(1,1:2*m),fft_filtoutI(1,1:2*m))
title('基带信号频谱')
grid on
%figure(2)
%subplot(3,1,1)
%plot(baseband_i(1,:), 'DisplayName', 'frameinsertI', 'YDataSource', 'frameinsertI');
%title('滤波器输入信号')
%grid on
%subplot(3,1,2)
%plot(filtoutI, 'DisplayName', 'frameoutI', 'YDataSource', 'frameoutI');
%title('滤波器输出信号')
%grid on
%subplot(3,1,3)
%plot(s_i, 'DisplayName', 'frameoutI', 'YDataSource', 'frameoutI');
%grid on
%title('I路BPSK调制信号')
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -