MATLAB 生成脉冲序列 pulstran函数使用详解

news2025/2/21 20:29:25

MATLAB 生成脉冲序列 pulstran函数使用详解

目录

前言

一、参数说明

二、示例一

三、示例二

总结


前言

        MATLAB中的pulstran函数用于生成脉冲序列,支持连续或离散脉冲。该函数通过将原型脉冲延迟并相加,生成脉冲序列,适用于信号处理和系统分析。本文将一 一详细解释该函数中的每个参数的含义并列举多个仿真实例展示如何去使用这个函数。


以下是本篇文章的正文内容。创作不易,若您觉得有帮助,希望您能给博主打赏。这将是对我持续创作高质量内容的莫大鼓励,万分感谢!

一、参数说明

调用格式为 y = pulstran(t,d,func,fs) ,其中fs可以省略。

其中 t 是基本的时间向量,通常是一个等间隔的采样时间序列,由采样频率决定。

d=[d1 d2],d1是脉冲的延迟时间,表示脉冲在时间轴上的位置偏移,由脉冲重复频率决定,d2是脉冲的增益,表示脉冲的幅度缩放因子。

func是脉冲原型函数,脉冲默认的幅度值为1,如果使用关键字 'rectpuls' | 'gauspuls' | 'tripuls'的话,fs代表脉冲持续时间,如果是自己定义的序列函数,fs才代表采样频率。

二、示例一

本示例演示脉冲原型函数使用关键字 'rectpuls' | 'gauspuls' | 'tripuls'的用法。

fs=1e3;        % 采样频率
T=60;          % 持续时间
t = 0:1/fs:T; % 采样时刻
Tb=1;          % 脉冲宽度
d1=0:Tb:T;
d2=sin(2*pi*0.05*(0:Tb:T)); % 幅值用sin加权,0.05Hz是正弦波频率
d = [d1;d2]';
y = pulstran(t-Tb/2,d,'rectpuls',Tb); % Tb/2是一个偏移量,用于调整脉冲的起始位置。
plot(t,y,'b','LineWidth',1.0);
hold on;
plot(0:Tb:T,d2,'r');
xlabel('Time (s)');
ylabel('Waveform');
grid on;

        运行以上代码得下图,可见sin周期为20s,与0.05Hz对应;脉冲重复间隔为1s,与Tb对应;持续时间为60s,和T对应。

如果去掉sin加权,将其中一行代码改为:

d = [d1]';

那么结果如下图所示,脉冲全为1,就是一条蓝色的直线。

如果不加Tb/2的偏移,将其中一行代码改为

y = pulstran(t,d,'rectpuls',Tb); %不加Tb/2的偏移

结果如下图,就会导致每个脉冲在时间抽上偏移Tb/2,如第一个,我们希望其持续时间为Tb=1s,但现在只有0.5s,所以需要加偏移。

如果在调用函数时将脉冲宽度缩小一半,设置的Tb,调用函数却用Tb/2,即将其中一行代码改为:

y = pulstran(t-Tb/2,d,'rectpuls',Tb/2);

那么相应生成的脉冲就会缩小一半,另外半个周期就会为0,如下图所示。

另外,我们还可以使用其他脉冲,比如改为三角波脉冲,如下,那么就是正弦波对三角波脉冲进行加权。

fs=1e3;        % 采样频率
T=60;          % 持续时间
t = 0:1/fs:T; % 采样时刻
Tb=1;          % 脉冲宽度
d1=0:Tb:T;
d2=sin(2*pi*0.05*(0:Tb:T)); % 幅值用sin加权,0.05Hz是正弦波频率
d = [d1;d2]';
y = pulstran(t-Tb/2,d,'tripuls',Tb); % Tb/2是一个偏移量,用于调整脉冲的起始位置。
plot(t,y,'b','LineWidth',1.0);
hold on;
plot(Tb/2:Tb:T,d2(1:end-1),'r');
xlabel('Time (s)');
ylabel('Waveform');
grid on;

三、示例二

本示例演示脉冲原型函数使用自定义的序列函数的用法。

ffs = 1e3;       % 自定义原型脉冲采样频率
tp = 0:1/ffs:1;
pp = sin(2*pi*30*tp).*exp(-30*abs(tp)); % 自定义原型脉冲,频率和阻尼因子均为30
figure(1);
plot(tp,pp,'b','LineWidth',1.0)
xlabel('Time (s)');
ylabel('Waveform');
grid on;

fs=2e3;        % 采样频率
T=1.2;         % 持续时间
t = 0:1/fs:T;  % 采样时刻
Tb=1/3;        % 脉冲宽度
d1=0:Tb:T;
d2=4.^-d1;     % 幅值用指数加权
d = [d1;d2]';
y = pulstran(t,d,pp,ffs); % ffs是自定义原型脉冲采样频率
figure(2);
plot(t,y,'b','LineWidth',1.0);
xlabel('Time (s)');
ylabel('Waveform');
grid on;

代码首先自定义了一个原型脉冲为指数衰减的正弦波,然后用其生成脉冲,观察仿真结果可知结果和设置的参数是吻合的,这里需要注意,使用自定义的原型脉冲时,y = pulstran(t,d,pp,ffs);中 ffs是自定义原型脉冲采样频率,不再是脉冲宽度。

原型脉冲

如果去掉参数d2,那么默认每个脉冲加权值均为1。

d = [d1]';

如果y = pulstran(t,d,pp,ffs);中参数ffs是与自定义原型脉冲采样频率不一致,就会压缩或者扩大原型脉冲,如下图所示。

y = pulstran(t,d,pp,ffs*2); %自定义原型脉冲采样频率的2倍


总结

        以上就是本次分享的全部内容啦,创作不易,若您觉得有帮助,希望您能打赏,这将是对我持续创作高质量内容的莫大鼓励,万分感谢!本文详细介绍了pulstran函数的使用,介绍的东西对于大部分场景都是够用的,如果还有其他需要,请自行阅读matlab help界面学习。

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

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

相关文章

概率论、组合数学知识点汇总

1、概率论知识点 全概率公式:如果事件B1,B2,…,Bn是样本空间的一个划分,则:贝叶斯定理:协方差:协方差用来衡量两个变量之间的变化趋势是否一致,公式为相关系数(Pearson)&#xff1a…

【人工智能】deepseek R1模型在蓝耘智算平台的搭建与机器学习的探索

📝个人主页🌹:Eternity._ 🌹🌹期待您的关注 🌹🌹 ❀ 蓝耘智算平台 deepseek R1简介与优点蓝耘智算平台蓝耘智算平台简介蓝耘智算平台优势deepseek R1模型在蓝耘智算平台的搭建模型使用与机器学习…

tomcat html乱码

web tomcat html中文乱码 将html文件改成jsp <% page language"java" contentType"text/html; charsetUTF-8" pageEncoding"UTF-8"%>添加 <meta charset"UTF-8">

基于单片机的智能奶茶机(论文+源码+图纸)

1总体架构设计 本课题为基于单片机的智能奶茶机设计&#xff0c;其系统架构上设计如图2.1所示&#xff0c;整个系统包括了DS18B20温度传感器、继电器模块、LCD液晶、蜂鸣器、按键、STC89C52单片机等器件&#xff0c;在功能上用户可以通过按键键控制选择甜度和添加物以及设置温度…

Centos7系统安装redis

Centos7系统安装redis 下载编译配置配置环境变量服务脚本安装使用远程连接 下载 下载地址&#xff1a;https://download.redis.io/releases/&#xff0c;选择版本6.2.7 具体下载链接&#xff1a;https://download.redis.io/releases/redis-6.2.7.tar.gz 操作&#xff1a;在ro…

图数据库neo4j进阶(一):csv文件导入节点及关系

CSV 一、load csv二、neo4j-admin import<一>、导入入口<二>、文件准备<三>、命令详解 一、load csv 在neo4j Browser中使用Cypher语句LOAD CSV,对于数据量比较大的情况,建议先运行create constraint语句来生成约束 create constraint for (s:Student) req…

深度剖析责任链模式

一、责任链模式的本质&#xff1a;灵活可扩展的流水线处理 责任链模式&#xff08;Chain of Responsibility Pattern&#xff09;是行为型设计模式的代表&#xff0c;其核心思想是将请求的发送者与接收者解耦&#xff0c;允许多个对象都有机会处理请求。这种模式完美解决了以下…

floodfill算法系列一>岛屿的最大面积

题解 整体思路&#xff1a;代码设计&#xff1a;代码呈现&#xff1a; 整体思路&#xff1a; 代码设计&#xff1a; 代码呈现&#xff1a; class Solution {int ret,m,n,count;boolean[][] vis;public int maxAreaOfIsland(int[][] grid) {m grid.length;n grid[0].length;v…

手机用流量怎样设置代理ip?

互联网各领域资料分享专区(不定期更新)&#xff1a; Sheet

游戏引擎学习第100天

仓库:https://gitee.com/mrxiao_com/2d_game_2 昨天的回顾 今天的工作重点是继续进行反射计算的实现。昨天&#xff0c;我们开始了反射和环境贴图的工作&#xff0c;成功地根据法线显示了反射效果。然而&#xff0c;我们还没有实现反射向量的计算&#xff0c;导致反射交点的代…

AT32系列微控制器低压电机控制开发板

参考&#xff1a;《UM0014_AT32_LV_Motor_Control_EVB_V20_User_Manual_V1.0.1_ZH.pdf》 开发板介绍 此电机开发板是一个泛用型的低压三相电机驱动器&#xff0c;应用雅特力科技AT32系列微控制器搭配雅特力电机函数库&#xff0c;可驱动直流无刷电机、交流同步电机&#xff0…

如何保持 mysql 和 redis 中数据的一致性?PegaDB 给出答案

MySQL 与 Redis 数据保持一致性是一个常见且复杂的问题&#xff0c;一般来说需要结合多种策略来平衡性能与一致性。 传统的解决策略是先读缓存&#xff0c;未命中则读数据库并回填缓存&#xff0c;但方式这种维护成本较高。 随着云数据库技术的发展&#xff0c;目前国内云厂商…

Vue3(3)

一.具体业务功能实现 &#xff08;1&#xff09;登录注册页面 [element-plus 表单 & 表单校验] 功能需求说明&#xff1a; 1.注册登录 静态结构 & 基本切换 2.注册功能 (校验 注册) 3.登录功能 (校验 登录 存token) import request from /utils/request// 注册接…

2025 西湖论剑wp

web Rank-l 打开题目环境&#xff1a; 发现一个输入框&#xff0c;看一下他是用上面语言写的 发现是python&#xff0c;很容易想到ssti 密码随便输&#xff0c;发现没有回显 但是输入其他字符会报错 确定为ssti注入 开始构造payload&#xff0c; {{(lipsum|attr(‘global…

Git命令摘录

使用 Git 升级软件通常是指通过 Git 仓库获取软件的最新版本或更新代码。以下是详细的步骤和方法&#xff1a; 1. 克隆软件仓库 如果这是你第一次获取软件代码&#xff0c;可以使用 git clone 命令将远程仓库克隆到本地。 git clone <仓库地址> 例如&#xff1a; git cl…

2024年博客之星年度评选—创作影响力评审+主题文章创作评审目前排名(2024博客之星陪跑小分队助力2024博客之星创作者成长)

2024年博客之星年度评选—创作影响力评审主题文章创作评审目前排名 2024年博客之星主题文章创作评审文章得分公布&#xff01;2024年博客之星创作影响力评审2024年博客之星主题文章创作评审目前排名公布&#xff01; 【2024博客之星】恭喜完成✅主题创作的226位博主&#xff0…

unity 0基础自学2.1:unity 中button的各类状态

文章目录 1、Button的状态2、脚本中获取button的状态2.1 分析状态获取2.2 通过实现接口获取button的状态2.2.1 鼠标点击与释放2.2.2 高亮模式2.2.3 退出选中模式&#xff08;高亮状态&#xff09;2.2.4 选择模式selected2.2.5 退出选择模式 3、射线与UI交互设置3.1 Canvas中组件…

《C++ Primer》学习笔记(一)

第一部分&#xff1a;C基础 在C和C编程语言中&#xff0c;main函数必须返回int类型的值。这一要求自C标准的第一次规范&#xff08;C89&#xff0c;也叫ANSI C&#xff09;开始就已经明确规定了。std::endl和\n都用于插入换行符。std::endl除了换行&#xff0c;还会强制刷新输…

DedeBIZ系统审计小结

之前简单审计过DedeBIZ系统&#xff0c;网上还没有对这个系统的漏洞有过详尽的分析&#xff0c;于是重新审计并总结文章&#xff0c;记录下自己审计的过程。 https://github.com/DedeBIZ/DedeV6/archive/refs/tags/6.2.10.zip &#x1f4cc;DedeBIZ 系统并非基于 MVC 框架&…

C#快速排序QuickSort将递归算法修改为堆栈Stack非递归方式

我们知道,方法的调用是采用Stack的方式[后进先出:LIFO], 在DeepSeek中快速搜索C#快速排序, 搜索结果如图: 我们会发现是采用递归的方式 . 递归的优点: 简单粗暴,类似于直接写数学公式,因代码量较少,易于理解.递归与循环迭代的运行次数都是一致的 递归的缺点: 占用大量的内…