Engee 文档

普尔斯特兰

脉冲的序列。

库::`工程师`

语法

函数调用

  • [参数:y]=pulstran(<参数:t>>,<参数:d>>,<参数:func>>) —根据连续函数样本生成脉冲序列 [参数:func].

争论

输入参数

# t — 时间值

+ 向量资料

Details

计算参数的时间值 [参数:func],设置为向量。

# d — 偏移量

+ 向量字符串 | 两列矩阵

Details

从矢量值中移除的偏移量 [参数:t],定义为实向量。 您可以通过指定参数将可选增益应用于每个延迟评估 d 作为具有在第1列中定义的偏移和在第2列中相应的增益的两列矩阵。 如果 d 设置为字符串向量,这些值仅解释为延迟。

# func — 连续函数

+ "直肠" | "高斯" | "绊脚石"

Details

用于根据其样本生成脉冲序列的连续函数,定义为 "直肠", "高斯""绊脚石".

# p — 脉冲原型

+ 向量资料

Details

原型函数,定义为向量。 间隔时间 p 设置为 [0,(长度(p)-1)/<参数:fs>>],并且其在该范围之外的样本是相同的零。 默认情况下,线性插值用于生成延迟。

# 财政司司长 — 抽样调查 费率+ 1 (默认情况下)| 真正的标量

Details

以Hz为单位的采样频率,设置为实标量。

# intfunc — 插值方法

+ "线性" (默认情况下)| "最近" | "下一个" | "上一篇" | "pchip" | "立方" | "v5cubic" | "牧马" | "样条"

Details

指定为表中所示选项之一的插值方法。

方法 资料描述 连续性 评论

"线性"

线性插值。 查询点处的内插值基于在每个相应维度中的相邻网格点处的值的线性内插。 这是默认的插值方法。

*需要至少2个点 * 它比最近邻插值需要更多的内存和计算时间。

"最近"

最近邻插值。 查询点处的插值值是采样网格中最近点处的值。

间歇性

*需要至少2个点 * 低内存要求 * 最快的计算时间

"下一个"

插值到下一个邻居。 查询点处的插值值是选择网格中下一个点处的值。

间歇性

*需要至少2分 * 与…​…​相同的内存需求和计算时间 "最近"

"上一篇"

前邻居的插值。 查询点处的内插值是选择网格中前一点处的值。

间歇性

*需要至少2个点 * 与…​…​相同的内存需求和计算时间 "最近"

"pchip""立方"

分段三次保形插值。 查询点处的插值值基于相邻网格点处的值的分段三次插值,同时保留形状。

*至少需要4分 * 需要更多的内存和计算时间比 "线性"

"v5cubic"

*Engee*中使用的三次卷积。

点应均匀分布

"牧马"

Akim的修正插值由三次埃尔米特多项式。 查询点处的内插值基于程度不高于第三的多项式的分段线性函数。 Akim的公式已被修改,以防止排放。

*需要至少2个点 * 产生的起伏少于 "样条" 但它并没有像以前那样积极地顺利进行 "pchip" * 计算需要的资源比 "pchip",但通常小于 "样条" * 内存要求类似 "样条"

"样条"

使用"not-a-knot"条件的样条插值。 查询点处的内插值基于在每个相应维度中的相邻网格点处的值的三次内插。

*至少需要4个点,如果有2个或3个点,则分别应用线性或二次插值。 * 需要更多的内存和计算时间比 "pchip"

输出参数

# y — 脉冲序列

+ 向量资料

Details

由函数生成的脉冲序列,作为向量返回。

例子:

周期性矩形脉冲

Details

在本例中,使用单位宽度的标准矩形脉冲生成脉冲序列。 重复率为 0.5 Hz,信号的持续时间 — 60 c,以及采样速率 — 1 千赫。 增益因子-频率正弦曲线 0.05 赫兹。

import EngeeDSP.Functions: pulstran, rectpuls

t = 0:1/1e3:60
d = [0:2:60 sin.(2π*0.05*(0:2:60))]
y = pulstran(t, d, rectpuls)

plot(t, y, xlabel="Time (s)", ylabel="Waveform", legend=false)

pulstran 1

非对称锯齿信号

Details

在这个例子中,产生具有重复率的非对称锯齿信号。 3 赫兹。 锯齿信号的宽度为 0.2 c,以及移位系数 — 1. 信号的持续时间为 1 c,以及采样速率 — 1 千赫。 让我们绘制脉冲序列。

import EngeeDSP.Functions: tripuls, pulstran

fs=1e3
t=0:1/1e3:1
d=0:1/3:1
x=tripuls(t,0.2,-1)
y=普尔斯特兰(t,d,x,fs)

plot(t,y,xlabel="Time(s)",ylabel="Waveform",legend=false)

pulstran 2

使用自定义脉冲更改插值方法

Details

让我们编写一个函数,生成一个自定义的指数衰减锯齿信号,频率为 0.25 赫兹。 生成函数具有第二个输入自变量,该自变量指定锯齿频率和衰减系数中的一个值。 让我们用采样频率显示生成的脉冲 0.1 kHz期间 1 秒,频率和衰减因子等于 50.

import EngeeDSP.Functions: sawtooth

fnx = (x, fn) -> sawtooth.(2π * fn * 0.25 * x) .* exp.(-2 * fn * x.^2)

fs = 100
t = 0:1/fs:1

pp = fnx(t, 50)

情节(t,pp,传奇=错误)

pulstran 3

使用函数 普尔斯特兰 以产生用户脉冲序列。 序列进行频率采样 0.1 kHz期间 125 几秒钟。 脉冲出现在每个 25 秒并且具有指数递减的幅度。

我们将生成的脉冲指定为原型。 我们将使用标准线性插值方法,最近邻插值和分段三次插值生成三个脉冲序列。 让我们比较同一图上的脉冲序列。

import EngeeDSP.Functions: pulstran

d = [0:25:125 exp.(-0.015*(0:25:125))]
ffs = 100
tp = 0:1/ffs:125

fnx = (x, fn) -> sawtooth.(2π * fn * 0.25 * x) .* exp.(-2 * fn * x.^2)
pp = fnx(tp, 50)

r = pulstran(tp, d, pp)
y = pulstran(tp, d, pp, "nearest")
q = pulstran(tp, d, pp, "pchip")

图(tp,r,标签="线性",xlims=(0,125))
阴谋!(tp,y,label="最近邻居")
阴谋!(tp,q,label="分段立方")

pulstran 4