在CCS5402环境下设计一个人机交互的可以改变阶数和截止频率FIR高通滤波器的简易代码
时间: 2024-02-23 16:02:42 浏览: 70
好的,根据您的要求,我可以为您提供一个使用Matlab语言编写的简易代码,用于实现可以改变阶数和截止频率的FIR高通滤波器。请参考以下代码:
```matlab
clc; %清除命令行窗口
clear; %清除工作区变量
close all; %关闭所有图形窗口
% 设置默认参数
order = 10; %阶数初始化为10
cutoff_frequency = 1000; %截止频率初始化为1000Hz
% 生成频率响应曲线
f = linspace(0,10000,10000); %生成0-10000Hz的频率向量
H = zeros(1,length(f)); %初始化频率响应向量
for i = 1:length(f) %循环计算每个频率的响应
if f(i) < cutoff_frequency %低于截止频率时响应为0
H(i) = 0;
else %高于截止频率时响应为1
H(i) = 1;
end
end
% 显示初始频率响应
figure; %创建图形窗口
plot(f,H); %绘制频率响应曲线
title('Initial Frequency Response'); %设置标题
xlabel('Frequency (Hz)'); %设置x轴标签
ylabel('Magnitude'); %设置y轴标签
% 生成滤波器系数
b = fir1(order,cutoff_frequency/(44100/2),'high'); %使用fir1函数生成滤波器系数
% 创建音频输入
fs = 44100; %采样率为44100Hz
t = 0:1/fs:1; %生成0-1s的时间向量
x = sin(2*pi*1000*t); %生成1000Hz正弦波作为输入信号
% 应用滤波器
y = filter(b,1,x); %使用filter函数进行滤波
% 显示输入和输出信号
figure; %创建图形窗口
subplot(2,1,1); %设置子图1
plot(t,x); %绘制输入信号
title('Input Signal'); %设置标题
xlabel('Time (s)'); %设置x轴标签
ylabel('Amplitude'); %设置y轴标签
subplot(2,1,2); %设置子图2
plot(t,y); %绘制输出信号
title('Output Signal'); %设置标题
xlabel('Time (s)'); %设置x轴标签
ylabel('Amplitude'); %设置y轴标签
```
这个代码可以让用户通过修改阶数和截止频率来生成不同的FIR高通滤波器,并且可以将其应用于输入信号上,从而输出滤波后的信号。请注意,这只是一个简单的例子,您可以根据自己的需要进行修改和扩展。
阅读全文