📄 filter_try.m
字号:
clc;%清除命令窗口
clear all;%清除工作空间workspace,以释放内存
%**************************************************************************
%※ 数 据 发 送 端 ※%
%**************************************************************************
%*** 产生随机数字比特流x,并将其进行串并变换,形成30路并行信号frame ***%
amplitude=1;
datalong=200
x=amplitude*randsrc(1,datalong);%长为200的随机数
framesend=x;
%**************************************************************************
%*** 将frame进行串并变换,分成frameI、frameQ两路 ***%
for var31=1:length(framesend)/2
frameI(1,var31)=framesend(1,2*var31-1); %奇数点
frameQ(1,var31)=framesend(1,2*var31); %偶数点
end;
%**************************************************************************
%*** 分别在frameI、frameQ相邻样点间插入一个零 ***%
sample_size=2;
frameinsertI=zeros(1,length(frameI)*sample_size);
frameinsertQ=zeros(1,length(frameQ)*sample_size);
for cha1=1:length(frameI)
frameinsertI(1,(cha1-1)*sample_size+1)=frameI(1,cha1);
frameinsertQ(1,(cha1-1)*sample_size+1)=frameQ(1,cha1);
end;
%**************************************************************************
%*** 设计4码元成型滤波器 rafa=0.6的升余弦滤波器 ***%
nn1=1:48;
x3=[(nn1-0)>=0];%1-48全1
x4=[(nn1-13)>=0];%前12为0,后36为1
shengyuxuan(nn1)=x3-x4;%前12为1,后36为0
nn2=13:48;
rfa=linspace(0,1,36);%生成36点线性向量,在0-1之间且包括0和1
shengyuxuan(nn2)=0.5*(cos(rfa*pi)+1);%36个点的升余弦yuxian
shengyuxuan(83:129)=fliplr(shengyuxuan(2:48)); %fliplr函数使行向量左右反转
Hshengyuxuan=shengyuxuan;
for nn3=1:8 %作IDFT变换求得滤波器的时域特性,生成8个点的时域序列作为滤波器系数
nn4=1:length(Hshengyuxuan);
htest(nn4)=Hshengyuxuan(nn4).*cos(2*pi*(nn4-1)*(nn3-1)/129); %两向量对应元素相乘,点乘
hsheng1(nn3)=sum(htest(nn4));
end;
hsheng3=hsheng1/length(Hshengyuxuan);%取前8个点
hsheng2=fliplr(hsheng3);
hsheng(1:8)=hsheng2(1:8);
hsheng(9:15)=hsheng3(2:8);
%**************************************************************************
%*** 对30路frameinsertI、frameinsertQ信号滤波 ,输出frameoutI、frameoutQ***%
% frameoutI=filter(hsheng,1,frameinsertI);
% frameoutQ=filter(hsheng,1,frameinsertQ);
frameinsertI(2,:)=filter(hsheng,1,frameinsertI(1,:));
frameinsertQ(2,:)=filter(hsheng,1,frameinsertQ(1,:));
%plot(frameinsertI, 'DisplayName', 'frameinsertI', 'YDataSource', 'frameinsertI');
%plot(frameoutI, 'DisplayName', 'frameoutI', 'YDataSource', 'frameoutI');
figure(1)
subplot(2,1,1)
plot(frameinsertI(1,:), 'DisplayName', 'frameinsertI', 'YDataSource', 'frameinsertI');
title('滤波器输入信号')
grid on
subplot(2,1,2)
plot(frameinsertI(2,:), 'DisplayName', 'frameoutI', 'YDataSource', 'frameoutI');
title('滤波器输出信号')
grid on
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -