对齐信号
通过延迟最早的信号来对齐两个信号。
库::`工程师`
语法
争论
输入参数
# *x*是 第一输入信号
+
向量资料
Details
第一个输入信号,指定为长度的数字向量 .
| 数据类型 |
|
# *y*是 第二输入信号
+
向量资料
Details
第二个输入信号,指定为长度的数字向量 .
| 数据类型 |
|
名称-值输入参数
指定格式中的可选参数对 名称=值,在哪里 姓名 -参数的名称,以及 价值 -适当的值。 类型参数 名称=值 它们应该放在其他参数之后,但对的顺序无关紧要。
# *方法*是 一种估计信号间延迟的方法
+
"xcorr" (默认情况下)| "maxpeak" | "npeak" | "上升时间"
Details
用于估计指定为信号之间的延迟的方法 "xcorr", "maxpeak", "npeak" 或 "上升时间". 您可以根据指定的参数指定其他名称值参数 方法:
-
"xcorr"-使用互相关的延迟估计。 如果方法指定为"xcorr",那么也可以指定[参数:MaxLag]; -
"maxpeak"-使用每个信号中最高峰的位置进行延迟估计。 如果方法指定为"maxpeak",那么你可以另外指定[参数:MinPeakProminence]和[参数:MinPeakHeight]; -
"npeak"-使用位置估计延迟 -每个信号中的th峰值。 如果方法指定为"npeak",那么你可以另外指定[参数:PeakNum],[参数:MinPeakProminence]和[参数:MinPeakHeight]; -
"上升时间"-使用每个信号中上升沿的位置进行延迟估计。 该函数使用指定的值[参数:StateLevels]寻找不断上升的战线。
例子:
如果第一个信号落后三个样本,则两个信号的均衡
Details
创建两个信号: x 和 y. 信号 x —这是一样的 y,除了你有 x 开头有三个零,结尾有一个额外的零。 对齐两个信号。
import EngeeDSP.Functions: alignsignals
x = [0, 0, 0, 1, 2, 3, 0, 0]
y = [1, 2, 3, 0]
xa, ya, D = alignsignals(x, y)
(xa = [0, 0, 0, 1, 2, 3, 0, 0], ya = [0, 0, 0, 1, 2, 3, 0], D = -3)
如果第二个信号落后两个样本,则两个信号的均衡
Details
创建两个信号: x 和 y. 信号 y —这是一样的 x,除了 y 它被延迟了两个计数。 对齐两个信号。
import EngeeDSP.Functions: alignsignals
x = [1, 2, 3]
y = [0, 0, 1, 2, 3]
xa, ya, D = alignsignals(x, y)
(xa = [0, 0, 1, 2, 3], ya = [0, 0, 1, 2, 3], D = 2)
使用最大窗口大小对齐信号 1:
maxlag = 1 xa, ya, D = alignsignals(x, y, Method="xcorr", MaxLag=maxlag)
(xa = [0, 1, 2, 3], ya = [0, 0, 1, 2, 3], D = 1)
两个双电平信号沿上升沿对齐
Details
我们将生成两个表示两电平信号的信号。 信号具有采样频率 50 Hz期间 20 几秒钟。 对于第一个信号,通过 13 测量开始后几秒钟。 对于第二个信号,通过 5 测量开始后几秒钟。 信号具有不同的幅度,并且处于具有不同方差的白高斯噪声中。 让我们绘制信号图。
t = range(0, 20, length=1001)
e1 = 1.4 .* tanh.(t .- 13) .+ randn(length(t)) ./ 3
e2 = tanh.(3 .* (t .- 5)) .+ randn(length(t)) ./ 5
plot(t, e1, label="e1")
plot!(t, e2, label="e2")
xlabel!("Seconds")
ylabel!("Amplitude")

对齐信号,使其转换时间匹配。
相关方法不允许我们充分对齐这种类型的信号。:
y1, y2 = alignsignals(e1, e2)
plot(y1, label="y1 (aligned e1)")
plot!(y2, label="y2 (aligned e2)")
xlabel!("Samples")
ylabel!("Amplitude")

使用该方法对齐信号 "上升时间":
y1, y2 = alignsignals(e1, e2, Method="risetime")
plot(y1, label="y1 (aligned e1)")
plot!(y2, label="y2 (aligned e2)")
xlabel!("Samples")
ylabel!("Amplitude")
