数字信号处理_编程实例1

 stem([1,2,3])

一、初始设置

%% 初始设置
% 清空工作空间,关闭无关页面
clc,clear,close all;
 
% 绘图变量
font_size = 12; %全局基础字体大小
axis_size = 10; %坐标轴刻度标签字体大小
line_width = 2; %绘图线条宽度
legend_size = 10.5; %图例字体大小
marker_size = 12; %数据点标记尺寸
figure_width = 14;  %图形整体宽度(单位:英寸)
figure_height = 8;  %图形整体高度(单位:英寸)
BiaValue = 0;      %偏置值/基准值(用于数据校准或零值参考)

二、波形、图

原始信号波形

%% //绘制原信号波形
t = 0:0.0001:10;
y = 3*sin(2*pi*10*t) + sin(2*pi*40*t) + sin(2*pi*200*t);

figure

%% 图形窗口参数设置
% 单位转换:英寸→厘米(1英寸=2.54厘米)
% 窗口位置:[左下角x坐标, y坐标, 宽度, 高度]
set(gcf,'Unit','centimeters','Position',[3 3 3+figure_width 3+figure_height]);  % 边距3cm+内容尺寸

%% 坐标轴精细调整
% LooseInset: 控制坐标轴与图形边界的间距
% TightInset: 系统自动计算的最小边距
% BiaValue: 用于X轴方向的额外偏移补偿(如避免标签截断)
set(gca,'LooseInset',get(gca,'TightInset')+[BiaValue,0,0,0],'FontName','Times New Roman','FontSize',font_size);
plot(t, y, 'b-', 'LineWidth', line_width)  % 蓝色实线 线宽控制
set(gca,'FontSize',font_size,'FontName','Times New Roman')  % 字体统一配置(确保中英文字体兼容)
xlim([0 1]);  % 显示1秒时长
ylim([-6 6]); % 幅值范围覆盖所有分量(3*1 + 1 + 1 = 5 +余量)
set(gca, 'XTick', 0:0.25:1);  % 每250ms一个主刻度
set(gca, 'YTick', -6:3:6);    % 幅值刻度步长3
xlabel('时间 (s)', 'FontSize', font_size, 'FontName', 'Times New Roman');
ylabel('信号幅值', 'FontSize', font_size, 'FontName', 'Times New Roman');
title('原信号波形', 'FontSize', font_size*1.5, 'FontName', 'Times New Roman');

理想信号波形

%% //绘制理想信号波形
t = 0:0.0001:10;
y = 3*sin(2*pi*10*t);
 
figure
set(gcf,'Unit','centimeters','Position',[3 3 3+figure_width 3+figure_height]);
set(gca,'LooseInset',get(gca,'TightInset')+[BiaValue,0,0,0],'FontName','Times New Roman','FontSize',font_size);
plot(t, y, 'b-', 'LineWidth', line_width)
set(gca,'FontSize',font_size,'FontName','Times New Roman')
xlim([0 1])
ylim([-4 4])
set(gca,'XTick',0:0.25:1)
set(gca,'YTick',-4:2:4)
xlabel('时间 (s)', 'FontSize', font_size, 'FontName', 'Times New Roman')
ylabel('信号幅值', 'FontSize', font_size, 'FontName', 'Times New Roman')
title('理想信号波形', 'FontSize', font_size*1.5, 'FontName', 'Times New Roman')

幅频、相频图

%% //采样,采样频率:100Hz,采样时长:1s
t = 0:0.01:1;
y = 3*sin(2*pi*10*t) + sin(2*pi*40*t) + sin(2*pi*200*t);
 
% figure
% set(gcf,'Unit','centimeters','Position',[3 3 3+figure_width 3+figure_height]);
% set(gca,'LooseInset',get(gca,'TightInset')+[BiaValue,0,0,0],'FontName','Times New Roman','FontSize',font_size);
% plot(t, y, 'b-', 'LineWidth', line_width)
% set(gca,'FontSize',font_size,'FontName','Times New Roman')
% xlim([0 1])
% ylim([-6 6])
% set(gca,'XTick',0:0.25:1)
% set(gca,'YTick',-6:3:6)
% xlabel('时间 (s)', 'FontSize', font_size, 'FontName', 'Times New Roman')
% ylabel('信号幅值', 'FontSize', font_size, 'FontName', 'Times New Roman')
% title('原信号采样后的波形', 'FontSize', font_size*1.5, 'FontName', 'Times New Roman');
% set(gca,'Fontname','Monospaced');  %中文乱码问题


 
%% //信号分析
% 数据长度
datalength = length(y);
% 对数据进行FFT
yFFT = fft(y, datalength);
mag = abs(yFFT);
% 幅值归一化
mag = mag*2/datalength;
pha = angle(yFFT)*180/pi;
% 对无效相位进行置0
for i = 1:datalength
    if (mag(1,i)<0.3)
        pha(1,i) = 0;
    end
end

% 序列坐标
n = 0:datalength-1;
% 采样频率
fs = 1/0.01;
% 序列频率
f = (0:datalength-1)*fs/datalength;

 
figure
set(gcf,'Unit','centimeters','Position',[3 3 3+figure_width 3+figure_height]);
set(gca,'LooseInset',get(gca,'TightInset')+[BiaValue,0,0,0],'FontName','Times New Roman','FontSize',font_size);
stem(f(1:datalength/2), mag(1:datalength/2), 'b-', 'LineWidth', line_width)
set(gca,'FontSize',font_size,'FontName','Times New Roman')
xlim([0 50])
ylim([0 4])
set(gca,'XTick',0:10:50)
set(gca,'YTick',0:1:4)
xlabel('频率 (Hz)', 'FontSize', font_size, 'FontName', 'Times New Roman')
ylabel('幅值', 'FontSize', font_size, 'FontName', 'Times New Roman')
title('采样信号的频域分析', 'FontSize', font_size*1.5, 'FontName', 'Times New Roman')
 set(gca,'Fontname','Monospaced');  %中文乱码问题

 figure
set(gcf,'Unit','centimeters','Position',[3 3 3+figure_width 3+figure_height]);
set(gca,'LooseInset',get(gca,'TightInset')+[BiaValue,0,0,0],'FontName','Times New Roman','FontSize',font_size);
stem(f(1:datalength/2), pha(1:datalength/2), 'b-', 'LineWidth', line_width)
set(gca,'FontSize',font_size,'FontName','Times New Roman')
xlim([0 50])
ylim([-100 200])
set(gca,'XTick',0:10:50)
set(gca,'YTick',-100:100:200)
xlabel('频率 (Hz)', 'FontSize', font_size, 'FontName', 'Times New Roman')
ylabel('相位 (deg)', 'FontSize', font_size, 'FontName', 'Times New Roman')
title('采样信号的频域分析', 'FontSize', font_size*1.5, 'FontName', 'Times New Roman')
set(gca,'Fontname','Monospaced');  %中文乱码问题

三、低通滤波器

fdatool 

打开工具箱

打开后,保存为Filter_E3.mat

保存后,双击此处

%% //滤波器低通滤波
load('Filter_E3.mat')
filteroce = Num;
y_Filter = filter(filteroce, 1, y);
 
% 绘制滤波后的信号
figure
set(gcf,'Unit','centimeters','Position',[3 3 3+figure_width 3+figure_height]);
set(gca,'LooseInset',get(gca,'TightInset')+[BiaValue,0,0,0],'FontName','Times New Roman','FontSize',font_size);
plot(t, y_Filter, 'b-', 'LineWidth', line_width)
set(gca,'FontSize',font_size,'FontName','Times New Roman')
xlim([0 1])
ylim([-6 6])
set(gca,'XTick',0:0.25:1)
set(gca,'YTick',-6:3:6)
xlabel('时间 (s)', 'FontSize', font_size, 'FontName', 'Times New Roman')
ylabel('信号幅值', 'FontSize', font_size, 'FontName', 'Times New Roman')
title('滤波后的信号', 'FontSize', font_size*1.5, 'FontName', 'Times New Roman')
set(gca,'Fontname','Monospaced');  %中文乱码问题

参考

数字信号处理_第1个编程实例_现代信号处理第一张程序设计-CSDN博客

【数字信号处理_第1个Matlab编程实例】 https://www.bilibili.com/video/BV1514y1w7Sw/?share_source=copy_web&vd_source=be33b1553b08cc7b94afdd6c8a50dc5a 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/917598.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/917598.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker 安装部署 OceanBase

1.拉取镜像 docker pull oceanbase/oceanbase-ce:latest2.启动oceanbase容器 docker run -p 2881:2881 --name oceanbase-ce -e MINI_MODE0 -d quay.io/oceanbase/oceanbase-ce3.查看oceanbase初始化的日志信息 docker logs oceanbase-ce4.进入oceanbase容器 docker exec -it o…

【华为机试】685. 冗余连接 II

文章目录685. 冗余连接 II题目描述示例 1&#xff1a;示例 2&#xff1a;提示&#xff1a;解题思路算法分析核心思想算法策略算法对比问题分类流程图并查集环检测流程入度统计与候选边选择情况分析决策树完整算法流程复杂度分析时间复杂度空间复杂度关键实现技巧1. 并查集优化2…

Redis之Hash和List类型常用命令

Redis之Hash和List类型常用命令一、Hash类型详解1. Hash类型的特点2. 常用命令及示例&#xff08;1&#xff09;设置字段值&#xff08;2&#xff09;获取字段值&#xff08;3&#xff09;删除字段&#xff08;4&#xff09;其他常用命令3. 应用场景二、List类型详解1. List类型…

【测试】⾃动化测试概念篇

本节⽬标&#xff1a;⾃动化测试Web⾃动化测试selenium1. ⾃动化1.1 ⾃动化概念⾃动化在⽣活中处处可⻅&#xff0c;⾃动的代替⼈的⾏为完成操作。⾃动洒⽔机&#xff0c;主要通上⽔就可以⾃动化洒⽔并且可以⾃动的旋转。⾃动洗⼿液&#xff0c;免去了⼿动挤压可以⾃动感应出洗…

Java中给List<T> 对象集合去重

Java中给List 对象集合去重List<Student> getStudentList studentMapper.getStudentList();List<Student> distinctInsurance distinctByField(getStudentList, Student::getCertNo);public static <T> List<T> distinctByField(List<T> list…

最小二乘法MSE

最小二乘法MSEx1x2x3x4x5x6x7x8x0y014805-29-31339-41064-14-2-1481-114-1-65-123-32-21305-23105114-81126-15-15-8-157-4-1221-39511-10-243-9-671-87-1404-35101371422-3-7-2-80-6-5-91-3091前景知识: 矩阵相关公式y(339−11430126−395−87422−309)y\begin{pmatrix} 339&a…

Pixel 4D 3.4.4.0 | 支持丰富的壁纸资源,高清画质,高度的个性化设置能力,智能推荐功能

Pixel 4D是一款功能强大且用户体验良好的动态壁纸应用。它提供了丰富的壁纸资源和高清画质&#xff0c;让用户可以轻松找到自己喜欢的壁纸。此外&#xff0c;该应用还具备高度的个性化设置能力&#xff0c;允许用户根据自己的喜好调整壁纸效果。智能推荐功能则能帮助用户发现更…

<PhotoShop><JavaScript><脚本>基于JavaScript,利用脚本实现PS软件批量替换图片,并转换为智能对象?

前言 PhotoShop软件支持JavaScript脚本,来扩展软件的功能,官方本身也提供了一些常用脚本,如图像处理等,同时也支持自定义的JavaScript脚本。 环境配置 系统:windows 平台:visual studio code 语言:JavaScript 软件:PhotoShop 2022 版本:23.2.1 概述 本文利用Java…

【Linux】System V - 基于建造者模式的信号量

目录 信号量和P、V原语 信号量集结构体 信号量操作接口 semget semctl semop 封装Sem 关于建造者模式 信号量和P、V原语 信号量和 P、V 原语由 Dijkstra &#xff08;迪杰斯特拉&#xff09;提出 信号量值含义 S>0: S 表⽰可⽤资源的个数 S0: 表⽰⽆可⽤资源&a…

机器学习(11):岭回归Ridge

岭回归是失损函数通过添加所有权重的平方和的乘积(L2)来惩罚模型的复杂度。均方差除以2是因为方便求导&#xff0c;w_j指所有的权重系数, λ指惩罚型系数&#xff0c;又叫正则项力度特点:岭回归不会将权重压缩到零&#xff0c;这意味着所有特征都会保留在模型中&#xff0c;但它…

调整Idea缓存目录,释放C盘空间

本文使用 Idea2024 Idea 会将一些配置默认缓存在C盘&#xff0c;使用久了会占用大量空间&#xff08;本人的Idea占用了将近5个G&#xff0c;以至于不得不进行迁移&#xff09; 缓存目录主要涉及以下四个目录&#xff0c;四个目录可以分为两组&#xff0c;每组目录必须一起调整 …

手搓栅格工具-山体阴影

一、概述 山体阴影工具通过为栅格中的每个像元确定照明度&#xff0c;来获取表面的假定照明度。 通过设置假定光源的位置并计算每个像元相对于相邻像元的照明度值来实现此目的。 它可以显著增强用于分析或图形显示的表面的可视化效果&#xff0c;尤其是在使用透明度时。 默认情…

Censtos docker安装方法

#设置防火墙 systemctl stop firewalld.service setenforce 0 #安装依赖包 yum install -y yum-utils device-mapper-persistent-data lvm2 #yum-utils&#xff1a;提供了 yum-config-manager 工具。 #device mapper&#xff1a; 是Linux内核中支持逻辑卷管理的通用设备映射机制…

单片机51 day46

单片机 一&#xff1a;基础概念 一&#xff1a;单片机最小系统 单片机&#xff1a;电源时钟&#xff08;晶振&#xff09;复位 //实现的最小组件 电源&#xff1a;5V直流 时钟(晶振)&#xff1a;决定系统运行的速率 一般12M&#xff08;不超过50M&#xff09;&#xff0c…

【无标题】解锁未来无线网络的无限可能——Mesh自组网设备

在科技迅猛发展的今天&#xff0c;无线网络已经成为了现代生活不可或缺的一部分。无论是在家庭中娱乐观看视频、在线游戏&#xff0c;还是在企业中进行办公、远程协作&#xff0c;网络的稳定性和覆盖范围都直接影响着我们的使用体验。传统的Wi-Fi网络在面临多设备同时连接或大面…

Libevent(5)之使用教程(4)工具

Libevent(5)之使用教程(4)工具函数 Author: Once Day Date: 2025年8月3日 一位热衷于Linux学习和开发的菜鸟&#xff0c;试图谱写一场冒险之旅&#xff0c;也许终点只是一场白日梦… 漫漫长路&#xff0c;有人对你微笑过嘛… 本文档翻译于&#xff1a;Fast portable non-blo…

Linux指令(3):

1. cal指令&#xff1a;我们的cal指令有日历的意思看上面&#xff0c;我们输入一个cal指令&#xff0c;可以查看当前月的日历&#xff0c;我们给cal指令后面加上 - 3&#xff0c;他就会显示这个月为中间的三个月的日历&#xff0c;但是-4 不行&#xff0c;-5 也不行。只能 - 3。…

MLS平滑滤波

1.前言 最近在学习&#xff0c;因此查阅相关资料&#xff0c;该怎么表述感觉有些困难 2.代码 2.1代码1 使用全局坐标系 参考&#xff1a;python点云移动最小二乘法(Moving Least Squares)平滑_移动最小二乘法python-CSDN博客 def Moving_Least_Squares_Smoothing_v1_expla…

华为2288H V5服务器闪红灯 无法开机案例

广东某客户1台华为2288H V5服务器&#xff0c;由于单位外围电力维修导致服务器有过一次异常断电。结果来电之后发现服务器无法开机&#xff0c;开机面板上有个红色心跳指示灯&#xff0c; 工程师到客户现场后通过192.168.2.100登陆到2288H V5服务器的BMC管理口&#xff0c;打算…

SRIO入门之官方例程仿真验证

仿真SRIO事务时序仿真之前先完成下面两步操作&#xff1a;1.Vivado软件版本2020.1&#xff0c;创建好工程及SRIO的IP核2.右键综合化的IP核&#xff0c;然后选择打开IP示例工程直接运行仿真分别将request和response两个模块添加到仿真窗口进行查看运行1000us左右就可以看到信号动…