MATLAB绘采用低通滤波处理加噪方波信号
Matlab
clc;close all;clear all;warning off;%清除变量
rand('seed', 100);
randn('seed', 100);
format long g;
% MATLAB代码:绘制加噪方波并采用低通滤波后绘制图像
% 参数设置
Fs = 1000; % 采样频率
T = 1/Fs; % 采样周期
L = 1000; % 信号长度
t = (0:L-1)*T; % 时间向量
f = 5; % 方波频率
A = 1; % 方波振幅
% 生成方波信号
square_wave = A * square(2*pi*f*t);
% 添加噪声
noise_power = 0.05; % 噪声功率
noise = sqrt(noise_power) * randn(size(t)); % 生成高斯白噪声
noisy_square_wave = square_wave + noise; % 加噪方波信号
% 设计低通滤波器
fc = 15; % 截止频率
Wn = fc/(Fs/2); % 归一化截止频率
[b,a] = butter(4, Wn, 'low'); % 设计4阶巴特沃斯低通滤波器
% 应用低通滤波器
filtered_signal = filter(b, a, noisy_square_wave);
% 为了避免相位失真,可以使用filtfilt进行零相位滤波
% filtered_signal = filtfilt(b, a, noisy_square_wave);
% 绘制图像
figure;
subplot(3,1,1);
plot(t, square_wave);
title('Original Square Wave');
xlabel('Time (s)');
ylabel('Amplitude');
grid on;
subplot(3,1,2);
plot(t, noisy_square_wave);
title('Noisy Square Wave');
xlabel('Time (s)');
ylabel('Amplitude');
grid on;
subplot(3,1,3);
plot(t, filtered_signal);
title('Filtered Signal');
xlabel('Time (s)');
ylabel('Amplitude');
grid on;