一维数据滤波MATLAB程序
时间: 2024-04-30 14:23:16 浏览: 73
以下是一维数据滤波MATLAB程序的示例代码:
```matlab
%% 一维数据滤波
clc; clear; close all;
%% 生成原始信号
fs = 1000; % 采样率
t = 0:1/fs:1-1/fs; % 时间序列
f = 10; % 信号频率
x = sin(2*pi*f*t); % 原始信号
%% 添加噪声
noise = 0.1*randn(size(x)); % 高斯噪声
y = x + noise; % 带噪声的信号
%% 滤波
% 低通滤波器
fc = 20; % 截止频率
[b,a] = butter(6,fc/(fs/2),'low'); % 6阶Butterworth低通滤波器设计
z = filtfilt(b,a,y); % 无相位滤波
%% 绘图
figure;
subplot(3,1,1); plot(t,x); title('原始信号'); xlabel('时间 (s)'); ylabel('幅值');
subplot(3,1,2); plot(t,y); title('带噪声的信号'); xlabel('时间 (s)'); ylabel('幅值');
subplot(3,1,3); plot(t,z); title('滤波后的信号'); xlabel('时间 (s)'); ylabel('幅值');
```
运行程序后,会生成一个带噪声的正弦信号,并使用6阶Butterworth低通滤波器对其进行滤波,最终绘制出原始信号、带噪声的信号和滤波后的信号的图像。可以通过修改代码中的截止频率、滤波器类型等参数进行不同的滤波操作。
阅读全文