当前位置: 首页 > news >正文

Matlab信号处理1:模拟去除信号噪声

由于工作内容涉及信号系统、信号处理相关知识,本人本硕均为计算机相关专业,专业、研究方向均未涉及信号相关知识,因此需进行系统地学习。之前已将《信号与系统》快速过了一遍,但感觉较抽象且理解较浅显。在此系统地学习如何使用Matlab进行信号处理,以此加深对信号相关知识的理解。


一个简单的示例:

设计Matlab程序,去掉左图信号中大于20Hz的频率,使其变为右图。

% 1.生成原信号并绘图
% 生成10s的信号,每隔0.0001s生成1次
t1 = 0:0.0001:10; 
% 原信号
y1 = 3*sin(2*pi*10*t1)+sin(2*pi*40*t1)+sin(2*pi*200*t1); % 原信号时域图
subplot(321);
plot(t1,y1);% 设置横纵轴范围
xlim([0 1]);
ylim([-6 6]);% 设置图名、横纵轴标签
title('原信号时域');
xlabel('时间(s)');
ylabel('幅值');% 设置横纵轴分度值
set(gca,'XTick',0:0.25:1); 
set(gca,'YTick',-6:3:6);% 2.模拟采样
% 采样时长1s,采样频率100Hz
t2 = 0:0.01:1;  
y2 = 3*sin(2*pi*10*t2)+sin(2*pi*40*t2)+sin(2*pi*200*t2); % 采样信号图
subplot(322);
plot(t2,y2);% 设置横纵轴范围
xlim([0 1]);
ylim([-6 6]);% 设置图名、横纵轴标签
title('采样信号波形');
xlabel('时间(s)');
ylabel('幅值');% 设置横纵轴分度值
set(gca,'XTick',0:0.25:1); 
set(gca,'YTick',-6:3:6);% 3.fft
% 采样后信号的数据长度
dataLength = length(y2);% 对采样后的信号进行fft
y2FFT = fft(y2,dataLength);% 求幅值
mag = abs(y2FFT);% 幅值归一化
mag = mag*2/dataLength;
pha = angle(y2FFT)*180/pi;% 无效相位置0
for i = 1:dataLengthif (mag(1,i)<0.3)pha(1,i) = 0;end
end% fft后的序列坐标
n = 0:dataLength-1;% 采样频率
fs = 1/0.01;% 序列频率
f = (0:dataLength-1)*fs/dataLength;% fft频域图
% 绘制幅度谱,stem:绘制离散信号图
subplot(323);
stem(f(1:dataLength/2),mag(1:dataLength/2));
xlim([0 50]);
ylim([0 4]);
set(gca,"XTick",0:10:50);
xlabel("频率(Hz)");
title('幅度谱');% 绘制相位谱
subplot(324);
stem(f(1:dataLength/2),pha(1:dataLength/2));
xlim([0 50]);
set(gca,'XTick',0:10:50);
xlabel("频率(Hz)");
ylabel("相位");
title('相位谱');% 低通滤波器滤波
% 载入设计的滤波器
load("my_filter.mat");% 滤波
% 滤波器系数存放于filtercoe数组中
filtercoe = my_filter;
y_Filtered = filter(filtercoe,1,y2);% 滤波后的时域图
subplot(326);
plot(t2,y_Filtered);xlim([0 1]);
ylim([-6 6]);set(gca,'XTick',0:0.25:1); 
set(gca,'YTick',-6:3:6);title('滤波后时域');
xlabel('时间(s)');
ylabel('幅值');

注:

1. 第95行低通滤波器的设计需要在命令行窗口输入filterDesigner以打开滤波器设计窗口,如下图:

在窗口中设置如下红框中主要参数,然后点击设计滤波器

生成成后,会出现粉框中的波形。

点击文件-导出,点击弹出窗口中的导出

此时滤波器已经导出到工作区中。

右击工作区中导出的滤波器,另存为,之后便可通过该滤波器的名称导入到程序中使用

运行效果:

问题:

1. 图3中存在频谱泄露,后续学习如何解决;

2. 程序中的相关设计仍在学习;

http://www.lryc.cn/news/154583.html

相关文章:

  • Bootstrap的行、列布局设计(网络系统设计)
  • 1.1 计算机网络在信息时代中的作用
  • mysql CONCAT使用
  • maven基础学习
  • uniapp移动端地图,点击气泡弹窗并实现精准定位
  • 2023牛客暑期多校训练营7 CI「位运算」「根号分治+容斥」
  • YOLOv5算法改进(10)— 替换主干网络之GhostNet
  • Android Canvas的使用
  • AI批量写文章伪原创:基于ChatGPT长文本模型,实现批量改写文章、批量回答问题(长期更新)
  • git常用场景记录 | 拉取远程分支A合并到本地分支B - 删除上一次的commit
  • 源码角度解析SpringBoot 自动配置
  • 【原创】H3C路由器OSPF测试
  • 计算机视觉:轨迹预测综述
  • 三维跨孔电磁波CT数据可视化框架搭建
  • OC和Swift混编,导入头文件‘xxx-Swift.h‘ file not found
  • 一文读懂HOOPS Native平台:快速开发桌面端、移动端3D应用程序!
  • Scrum工作模式及Scrum工具
  • [ros][ubuntu]ros在ubuntu18.04上工作空间创建和发布一个话题
  • 我的区块链笔记
  • Spring事务(ACID特性、隔离级别、传播机制、失效场景)
  • 机器学习笔记之最优化理论与方法(六)无约束优化问题——最优性条件
  • E5061B/是德科技keysight E5061B网络分析仪
  • 2.4 PE结构:节表详细解析
  • Vue2项目练手——通用后台管理项目第五节
  • 软件工程学术顶会——ESEC/FSE 2022 议题(网络安全方向)清单、摘要与总结
  • 从C语言到C++_36(智能指针RAII)auto_ptr+unique_ptr+shared_ptr+weak_ptr
  • C++信息学奥赛1187:统计字符数
  • 计算机毕设 大数据商城人流数据分析与可视化 - python 大数据分析
  • vscode上搭建go开发环境
  • 10.(Python数模)(预测模型二)LSTM回归网络(1→1)