当前位置: 首页 > 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界面学习。

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

相关文章:

  • 开源、免费项目管理工具比较:2025最新整理30款
  • ffmpeg -muxers
  • 设置mysql的主从复制模式
  • ASP.NET Core的贫血模型与充血模型
  • 君海游戏岗位,需要私我
  • IBM服务器刀箱Blade安装Hyper-V Server 2019 操作系统
  • Unity中实现动态图集算法
  • MySQL中的覆盖索引的使用
  • XML DOM
  • [开源]MaxKb+Ollama 构建RAG私有化知识库
  • 迅为RK3568开发板篇OpenHarmony实操HDF驱动配置LED-LED测试
  • 将Mac上Python程序的虚拟环境搬到Windows
  • 大语言模型评价 怎么实现去偏见处理
  • 3.React 组件化开发
  • 19vue3实战-----菜单子树的展示
  • 【AI大模型】Ollama部署本地大模型DeepSeek-R1,交互界面Open-WebUI,RagFlow构建私有知识库
  • JDK 17 和 JDK 21 在垃圾回收器(GC)上有什么优化?如何调整 GC 算法以提升应用性能?
  • CNN-GRU卷积神经网络门控循环单元多变量多步预测,光伏功率预测(Matlab完整源码和数据)
  • kotlin中expect和actual关键字修饰的函数作用
  • 鸿蒙音视频播放器:libwlmedia
  • 【devops】 Git仓库如何fork一个私有仓库到自己的私有仓库 | git fork 私有仓库
  • CEF132编译指南 MacOS 篇 - 构建 CEF (六)
  • mysql大数据量分页查询
  • 计算机毕业设计SpringBoot校园二手交易小程序 校园二手交易平台(websocket消息推送+云存储+双端+数据统计)(源码+文档+运行视频+讲解视频)
  • 尚硅谷爬虫note003
  • 【逆向工程】破解unity的安卓apk包
  • 稠密架构和稀疏架构
  • LeetCode --- 436周赛
  • 用easyExcel如何实现?
  • 从 X86 到 ARM :工控机迁移中的核心问题剖析