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是自定义原型脉冲采样频率,不再是脉冲宽度。
![](https://i-blog.csdnimg.cn/direct/639c7b01392d4843a0828ec68db01f99.png)
如果去掉参数d2,那么默认每个脉冲加权值均为1。
d = [d1]';
如果y = pulstran(t,d,pp,ffs);中参数ffs是与自定义原型脉冲采样频率不一致,就会压缩或者扩大原型脉冲,如下图所示。
y = pulstran(t,d,pp,ffs*2); %自定义原型脉冲采样频率的2倍
总结
以上就是本次分享的全部内容啦,创作不易,若您觉得有帮助,希望您能打赏,这将是对我持续创作高质量内容的莫大鼓励,万分感谢!本文详细介绍了pulstran函数的使用,介绍的东西对于大部分场景都是够用的,如果还有其他需要,请自行阅读matlab help界面学习。