用余弦MATLAB实现升余弦滤波器
时间: 2023-11-19 09:05:32 浏览: 130
升余弦滤波器是一种常用的数字信号处理滤波器,可以用于数字通信中的信号调制和解调等应用。下面是在 MATLAB 中使用余弦函数实现升余弦滤波器的示例代码:
```matlab
% 设置参数
Fs = 100; % 采样率
T = 1/Fs; % 采样时间间隔
f_cut = 20; % 截止频率
beta = 0.5; % 升余弦滚降因子
N = 1024; % 采样点数
% 生成频域升余弦滤波器
f = linspace(-Fs/2, Fs/2, N);
H = zeros(1, N);
for i = 1:N
if abs(f(i)) <= (1-beta)*f_cut
H(i) = 1;
elseif abs(f(i)) <= (1+beta)*f_cut
H(i) = 0.5*(1+cos(pi*(abs(f(i))-(1-beta)*f_cut)/(beta*f_cut)));
end
end
% 做频域卷积
x = randn(1, N); % 生成随机信号
y = ifft(fft(x).*H); % 频域卷积
% 绘制结果
t = (0:N-1)*T;
figure;
subplot(2,1,1);
plot(t, x);
xlabel('Time (s)');
ylabel('Amplitude');
title('Input Signal');
subplot(2,1,2);
plot(t, y);
xlabel('Time (s)');
ylabel('Amplitude');
title('Output Signal');
```
代码中首先设置了一些参数,包括采样率、截止频率、升余弦滚降因子等。然后生成了频域升余弦滤波器,具体实现使用了余弦函数的表达式。接着生成了一个随机信号,并对其进行了频域卷积,得到了升余弦滤波器的输出信号。最后绘制了输入信号和输出信号的波形图。
阅读全文