21、matlab生成脉冲序列:pulstran()函数

ops/2024/11/17 21:30:19/

1、pulstran()函数

1)语法

语法1:y = pulstran(t,d,func,fs)  基于连续函数的采样产生脉冲序列
语法2:y = pulstran(t,d,p) 生成一个脉冲序列,该脉冲序列是向量p中原型脉冲的多个延迟插值的总和。
语法3:y = pulstran(,intfunc) 指定可选的插值方法,可以将此参数与前面的任何输入语法一起使用。

2)参数

t:时间    d:抵消    func:连续函数    p:原型脉冲    fs:采样率    intfunc:插值法

2、周期性矩形脉冲

代码

t = 0:0.001:60;
d = [0:2:60;sin(2*pi*0.05*(0:2:60))]';
x = @rectpuls;
y = pulstran(t,d,x);
plot(t,y)
hold off
xlabel('s/时间')
ylabel('幅值')

试图效果

 

 

3、不对称锯齿波形

代码

fs = 2e3;
t = 0:1/2e3:1;
d = 0:1/3:1;   
x = tripuls(t,0.2,-1);
y = pulstran(t,d,x,fs);
plot(t,y)
hold off
xlabel('s/时间')
ylabel('幅值')

视图效果

4、 周期高斯脉冲

1)单个高斯脉冲

代码

fs = 2e7;
tc = gauspuls('cutoff',10e3,0.5,[],-40); 
t = -tc:1/fs:tc; 
x = gauspuls(t,10e3,0.5); 
plot(t,x)
xlabel('s/时间')
ylabel('幅值')

视图效果 

2)高斯脉冲序列

代码

fs = 2e7;
tc = gauspuls('cutoff',10e3,0.5,[],-40); 
t = -tc:1/fs:tc; 
x = gauspuls(t,10e3,0.5); 
% plot(t,x)
% xlabel('s/时间')
% ylabel('幅值')
ts = 0:1/50e3:0.025;
d = [0:1/1e3:0.025;sin(2*pi*0.1*(0:25))]';
y = pulstran(ts,d,x,fs);
plot(ts,y)
xlim([0 0.01])
xlabel('s/时间')
ylabel('幅值')

视图效果 

 

 5、定制脉冲序列

1)单个脉冲

代码

fx1 = @(x,fn) sin(2*pi*fn*x).*exp(-fn*abs(x));%函数句柄
ffs = 1000;
tp = 0:1/ffs:1;
pp = fx1(tp,30);
plot(tp,pp)
xlabel('s/时间')
ylabel('幅值')

试图效果

2)脉冲序列1

代码

fx1 = @(x,fn) sin(2*pi*fn*x).*exp(-fn*abs(x));%函数句柄
ffs = 1000;
tp = 0:1/ffs:1;
pp = fx1(tp,30);
plot(tp,pp)
xlabel('s/时间')
ylabel('幅值')fs = 2e3;
t = 0:1/fs:1.2;
d = 0:1/3:1;
dd = [d;4.^-d]';
z = pulstran(t,dd,pp,ffs);
plot(t,z)
xlabel('s/时间')
ylabel('幅值')

视图效果 

3)脉冲序列

代码

fx1 = @(x,fn) sin(2*pi*fn*x).*exp(-fn*abs(x));%函数句柄
ffs = 1000;
tp = 0:1/ffs:1;
pp = fx1(tp,30);
plot(tp,pp)
xlabel('s/时间')
ylabel('幅值')fs = 2e3;
t = 0:1/fs:1.2;
d = 0:1/3:1;
dd = [d;4.^-d]';
z = pulstran(t,dd,pp,ffs);
plot(t,z)
xlabel('s/时间')
ylabel('幅值')y = pulstran(t,dd,fx1,30);
plot(t,y)
xlabel('s/时间')
ylabel('幅值')

视图效果

6、改变插值方法与自定义脉冲

 1)单脉冲

代码

fnx = @(x,fn) sawtooth(2*pi*fn*0.25*x).*exp(-2*fn*x.^2);
fs = 100;
t = 0:1/fs:1;
pp = fnx(t,50);
plot(t,pp)
xlabel('s/时间')
ylabel('幅值')

视图效果

  2)插值脉冲序列(nearest和pchip)

代码

fnx = @(x,fn) sawtooth(2*pi*fn*0.25*x).*exp(-2*fn*x.^2);
fs = 100;
t = 0:1/fs:1;
pp = fnx(t,50);
plot(t,pp)
xlabel('s/时间')
ylabel('幅值')d = [0:25:125; exp(-0.015*(0:25:125))]';
ffs = 100;
tp = 0:1/ffs:125;
r = pulstran(tp,d,pp);
y = pulstran(tp,d,pp,'nearest');
q = pulstran(tp,d,pp,'pchip');
plot(tp,r)
hold on
plot(tp,y)
plot(tp,q)
xlim([0 125])
legend('默认','nearest','pchip')

试图效果:

 


http://www.ppmy.cn/ops/47368.html

相关文章

巨详细Linux安装Redis教程

巨详细Linux安装Redis 1、检查系统是否残留redis数据2、上传压缩包到服务器2.1压缩包获取2.2创建相关目录 3、安装Redis3.1解压Redis压缩包3.2安装Redis 4、配置Redis4.1设置Redis随系统启动4.2测试功能4.3设置密码和设置准许远程访问 1、检查系统是否残留redis数据 redis等数…

MySQL -- 索引

当表中的数据量到达几十万甚至上百万的时候,SQL查询所花费的时间会很长,导致业务超时出错,此 时就需要用索引来加速SQL查询。 由于索引也是需要存储成索引文件的,因此对索引的使用也会涉及磁盘I/O操作。如果索引创建过多&#xff…

学习串口屏需要了解哪些方面的知识

学习串口屏需要掌握的知识主要包括以下几个方面: 串口通信原理:串口屏是基于串口通信的显示控制模组,因此了解串口通信的基本原理和通信协议是必要的。你需要了解串口通信的基本概念、数据格式、波特率、校验位等参数,以及串口通…

使用Rufus工具制作Ubuntu To Go——很详细

一、准备工作 准备工具: 1、下载Rufus(主角)软件 2、准备一个U盘或硬盘(小白128G足够,装Ubuntu系统) 3、下载Ubuntu系统镜像文件 1、下载软件Rufus 先来看一下官网介绍: Rufus 是一款格式化和创建 USB 启动盘的辅助工…

外贸实战|做外贸要主动,才会跟客户有订单!

很多人对我说过这种情况:客户给我发了一份询盘,但是我回复以后,客户就不理我了,好伤心。 我问:你跟了多久了? 很多人都会回答:几天或者不记得,他不理我,我也不知道怎么…

多功能光时域反射仪的工作原理

6426A-2101多功能光时域反射仪是新一代掌上型智能化光纤通信测量仪器,具有强大的功能和广泛的应用领域。它能够显示光纤及光缆的损耗分布曲线图,测量光纤及光缆的多种关键参数,包括长度、损耗、接续质量等,为光纤通信系统的工程施…

【数据结构】二叉树:简约和复杂的交织之美

专栏引入: 哈喽大家好,我是野生的编程萌新,首先感谢大家的观看。数据结构的学习者大多有这样的想法:数据结构很重要,一定要学好,但数据结构比较抽象,有些算法理解起来很困难,学的很累…

Vue2 + Element UI 封装 Table 递归多层级列表头动态

注&#xff1a;此功能改为独立模块直接拿代码就可以使用。 1、在 components 中创建 HeaderTable 文件夹&#xff0c;在创建 ColumnItem.vue 和 index.vue。 如下&#xff1a; 2、index.vue 代码内容&#xff0c;如下&#xff1a; <template><div><div class…