📄 fil.m
字号:
function y=fil(x,nsample,roolfactor,mode,flag)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% 函数完成信号的脉冲成型 %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%参数说明
% x 输入信号序列
% nsample 重采样个数
% roolfactor 滚降系数[0 1]
% mode 滤波器选择
% mode=1 矩形脉冲
% mode=2 升余弦脉冲
% mode=3 平方根升余弦脉冲
% flag 调制方式选择
% mode=1 BPSK调制
% mode=2 QPSK调制
% mode=3 OQPSK调制
% mode=4 pi4QPSK调制
% mode=5 8PSK调制
% mode=6 16QAM调制
% mode=7 32QAM调制
% mode=8 64QAM调制
% mode=9 128QAM调制
%函数体
if flag==1|flag==2|flag==3|flag==5|flag==6|flag==7|flag==8|flag==9
delay=nsample;
elseif flag==4 %pi4QPSK调整滤波器延迟个数
delay=nsample*3/2;
end
if flag==3%若为OQPSK,每符号取样减半,原因在于oqpskmod已经隐含提供了两倍抽样
nsample=nsample/2;
end
switch mode
case 1,
y=rectpulse(x,nsample);
case 2,
rr=rcosine(1,nsample,'fir/normal',roolfactor,delay);%产生升余弦滤波器
y=rcosflt(x,1,nsample,'filter',rr);
y=y(nsample*delay+1:end-nsample*delay)';
case 3,
rr=rcosine(1,nsample,'sqrt',roolfactor,delay);%产生升余弦滤波器
y=rcosflt(x,1,nsample,'filter',rr);
y=y(nsample*delay+1:end-nsample*delay)';
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -