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

相关推荐
无意feel6 小时前
Matlab离线安装硬件支持包的方法
matlab·硬件支持包
studyer_domi6 小时前
matlab欠驱动船舶模型预测控制
人工智能·机器学习·matlab
88号技师9 小时前
2024年中科院一区SCI-雪雁优化算法Snow Geese Algorithm-附Matlab免费代码
开发语言·人工智能·算法·matlab·优化算法
机器学习之心1 天前
机器人路径规划 | 基于极光PLO优化算法的机器人三维路径规划Matlab代码
算法·matlab·机器人·三维路径规划
IT猿手1 天前
2025最新智能优化算法:改进型雪雁算法(Improved Snow Geese Algorithm, ISGA)求解23个经典函数测试集,MATLAB
数据库·人工智能·算法·机器学习·matlab
多喝烧碱2 天前
第四届图像、信号处理与模式识别国际学术会议(ISPP 2025)
信号处理
studyer_domi2 天前
matlab质子磁力仪传感器线圈参数绘图
人工智能·matlab
青橘MATLAB学习2 天前
模糊综合评价法:原理、步骤与MATLAB实现
开发语言·算法·数学建模·matlab·分类
studyer_domi2 天前
matlab 三维时频图绘制
开发语言·matlab
studyer_domi3 天前
matlab飞行姿态pid控制
matlab