MATLAB绘采用低通滤波处理加噪方波信号

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;
相关推荐
拾忆,想起20 分钟前
Redis发布订阅:实时消息系统的极简解决方案
java·开发语言·数据库·redis·后端·缓存·性能优化
AllyLi022430 分钟前
CondaError: Run ‘conda init‘ before ‘conda activate‘
linux·开发语言·笔记·python
羑悻的小杀马特34 分钟前
【C++高并发内存池篇】ThreadCache 极速引擎:C++ 高并发内存池的纳秒级无锁革命!
开发语言·c++·多线程·高性能内存池
布朗克1681 小时前
OpenTelemetry 在 Spring Boot 项目中的3种集成方式
java·开发语言·opentelemetry
jingfeng5141 小时前
线程池及线程池单例模式
linux·开发语言·单例模式
指针刺客2 小时前
嵌入式筑基之设计模式
开发语言·c++·设计模式
青铜发条2 小时前
【python】python进阶——with关键字
开发语言·python
༒࿈༙྇洞察༙༙྇྇࿈༒2 小时前
jwt原理及Java中实现
java·开发语言·状态模式·jwt
励志成为糕手2 小时前
Java线程池深度解析:从原理到实战的完整指南
java·开发语言·性能优化·线程池·拒绝策略
我不是程序猿儿3 小时前
【C#/Cpp】CLR项目搭建的内联和托管两选项
开发语言·microsoft·c#