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

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

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界面学习。

相关文章:

  • 数据处理中多线程功能的设计逻辑,及python的多线程实现
  • C# 变量,字段和属性的区别
  • SQL-leetcode—1683. 无效的推文
  • Linux 安装 Ollama
  • 使用epoll与sqlite3进行注册登录
  • Spring Boot中使用Flyway进行数据库迁移
  • 云原生AI Agent应用安全防护方案最佳实践(下)
  • 安灯电子看板助力汽车零部件工厂实时监控与高效管理
  • 学习京东写测试用例
  • 上传解析 Excel 表(XLSX 文件)转为JSON数据
  • 【C/C++】位段
  • 【嵌入式】PCB电路板设计时,如何保证信号完整性?
  • LLaMA-Factory DeepSeek-R1 模型 微调基础教程
  • 基于javaweb的SpringBootoa办公自动化系统设计和实现(源码+文档+部署讲解)
  • 策略模式-小结
  • 硬盘检测利器CrystalDiskMark
  • SAP-ABAP:SAP屏幕数据的处理逻辑
  • Python 量化
  • 最新PHP盲盒商城系统源码 晒图+免签+短信验证+在线回收 ThinkPHP框架
  • linux redis ipv6、ipv4 只接收本地访问、接收本地和远程访问
  • 网站怎么做快照/网站设计费用
  • 专业做网站平台/软文营销的概念
  • 网站建设 环保素材/网站网络推广推广
  • 网站如何做触屏滑动/sem推广软件选哪家
  • 南昌网站建设品牌/写软文赚钱的平台都有哪些
  • 组织建设是什么意思/seo搜索引擎优化人才