matlab实现根升余弦滤波器
时间: 2023-12-02 20:04:43 浏览: 279
根升余弦滤波器是一种常用的数字滤波器,常用于数字通信中。下面是MATLAB实现根升余弦滤波器的代码:
```matlab
% 设计根升余弦滤波器
Fs = 100; % 采样率
T = 1/Fs; % 采样周期
Rs = 5; % 码速率
span = 10; % 滚降系数
beta = 0.25; % 滚降因子
t = -span/Fs:T:span/Fs; % 时间序列
h = zeros(size(t)); % 初始化滤波器系数
for i = 1:length(t)
if t(i) == 0
h(i) = (1-beta+4*beta/pi);
elseif abs(t(i)) == T/(4*beta)
h(i) = beta/sqrt(2)*((1+2/pi)*sin(pi/(4*beta))+(1-2/pi)*cos(pi/(4*beta)));
else
h(i) = sin(pi*t(i)/T*(1-beta))+4*beta*t(i)/T*cos(pi*t(i)/T*(1+beta));
h(i) = h(i)/(pi*t(i)/T*(1-(4*beta*t(i)/T)^2));
end
end
h = h/sqrt(sum(h.^2)); % 归一化
% 绘制滤波器幅频响应
f = -Fs/2:Fs/length(h):Fs/2-Fs/length(h);
H = fftshift(fft(h));
figure;
plot(f,abs(H));
xlabel('频率(Hz)');
ylabel('幅度');
title('根升余弦滤波器幅频响应');```
上述代码中,首先定义了采样率Fs、码速率Rs、滚降系数span和滚降因子beta等参数。然后,根据根升余弦滤波器的公式,计算出滤波器的时域响应h。最后,对h进行归一化,并绘制出滤波器的幅频响应。
阅读全文