CIC低通滤波器 matlab代码
时间: 2023-09-06 21:10:16 浏览: 109
以下是一个简单的CIC低通滤波器的MATLAB代码实现:
```matlab
% CIC低通滤波器
clc;
clear;
close all;
% CIC滤波器参数
R = 16; % 采样率变换比
M = 1; % 每级CIC滤波器阶数
N = 4; % CIC滤波器级数
L = R^N; % 级联后的采样率变换比
Fs = 1; % 采样率
Fc = 0.2; % 截止频率
% 生成数据
N_data = 1024; % 数据点数
t = (0:N_data-1)/Fs; % 时间序列
f = 5; % 信号频率
x = sin(2*pi*f*t); % 信号
% CIC滤波器
y = x; % 初始化输出
for i = 1:N % 级联CIC滤波器
y = conv(y, ones(1, R)); % 累积器
y = y(1:R:end); % 抽取器
y = y * R^(M*i); % 增益
end
y = y / L^M; % 最后一级抽取器增益补偿
% 低通滤波器
[b, a] = butter(4, Fc/(Fs/2)); % 4阶巴特沃斯滤波器
y = filter(b, a, y);
% 作图
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('Filtered Signal');
```
这段代码实现了一个CIC低通滤波器,其中采样率变换比为16,每级CIC滤波器阶数为1,共4级级联,最终的采样率变换比为65536。输入信号为一个正弦波,经过CIC滤波器和4阶巴特沃斯低通滤波器后输出滤波后的信号。
阅读全文