?? filer_psk.m
字號:
%升余弦濾波器+PSK調制(單路)
%以碼元速率1.2288M為例,
clc;%清除命令窗口
clear all;%清除工作空間workspace,以釋放內存
%生成隨機數(shù)
%以下為QPSK調制
x_length=10; % 信息碼元個數(shù)
Rb=1228800;%碼元速率1.2288M
k=1; %一個碼元間隔包括1個載波周期/2
fc=k*Rb/2; % 載波頻率,
fs=fc*16; % 信號采樣率
x_size=k*fs/fc;
y=1:x_size; % 采樣時間序列,每個碼元采x_size點
x_i=randsrc(1,x_length,[-1,1]);%sign(rand(1,x_length)-0.5); 正負號函數(shù)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=25;%濾波器階數(shù)
shengyuxuian=myfilter(n);
filtoutI=filter(shengyuxuian,1,baseband_i);
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后數(shù)據(jù)點數(shù)目
f=1:fs/n:fs;
m=fc/fs*n*2; %此處m=fs/4=2fc
%基帶信號的付利葉變換
fft_baseband_i=abs(fft(baseband_i));
n=size(baseband_i,2); %FFT后數(shù)據(jù)點數(shù)目
f=1:fs/n:fs;
m=fc/fs*n*2; %此處m=fs/4=2fc
%圖1,調制信號頻譜圖
%figure(1)
%subplot(2,1,1)
%plot(f(1,1:m),fft_s_i(1,1:m))
%title('信號頻譜(BPSK)')
%grid on
%subplot(2,1,2)
%plot(f(1,1:m),fft_baseband_i(1,1: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 + -