Engee 文档

[医]信号

使用相似性搜索查找信号的位置。

库::`工程师`

语法

函数调用

争论

输入参数

# 数据 — 数据数组

+ 向量资料 | 矩阵

Details

指定为向量或矩阵的数据数组。

数据类型

漂浮物32, 漂浮64</无翻译> 支持复数::是

# 信号 — 搜索数组

+ 向量资料 | 矩阵

Details

指定为向量或矩阵的搜索数组。

数据类型

漂浮物32, 漂浮64</无翻译> 支持复数::是

名称-值输入参数

指定格式中的可选参数对 名称,值,在哪里 姓名 -参数的名称,以及 价值 -适当的值。 名称-值参数应该放在其他参数之后,但对的顺序无关紧要。

使用逗号分隔名称和值,以及 姓名 把它放在引号里。

例子: n.签名([10,12,3,4], [10.3,12.3], "最大电阻",0.2).

# 规范化 — 规范化统计

+ "没有" (默认情况下)

Details

归一化统计。 在当前实现中,只有模式可用 "没有" -不要正常化。

# 正常强度 — 归一化长度

+ 标量,标量

Details

归一化长度,设置为整数标量。 该值表示每个样本在数据和信号中归一化的最小样本数。 如果信号是矩阵,则 [医]正常强度 表示列数。

数据类型

漂浮物32, 漂浮64</无翻译>

# 最大阻力 — 最大距离

+ 资讯 (默认情况下)| 标量,标量

Details

最大段距离,设为正实标量。 如果指定 最大阻力 然后 findsignal 返回所有段的开始和结束索引 [参数:数据],其距离 [参数:信号] 是局部最小值和更少 最大阻力.

数据类型

漂浮物32, 漂浮64</无翻译>

# 最大金额 — 返回的最大段数

+ 1 (默认情况下)| 标量,标量

Details

返回的最大段数,设置为正整数标量。 如果指定 最大金额 然后 findsignal 查找所有段 [参数:数据],其距离 [参数:信号] 是局部最小值,并返回到 最大金额 距离最短的段。

数据类型

漂浮物32, 漂浮64</无翻译>

# 时间安排 — 时间对齐方法

+ "固定" (默认情况下)| "dtw"

Details

时间对齐方法:

  • "固定" -不要拉伸或重复计数以最小化距离;

  • "dtw" -试图通过拉伸时间轴并重复数据或信号中的计数来缩短距离。

# 公制 — 距离度量

+ "平方" (默认情况下)| "绝对" | "欧几里德" | "symmkl"

Details

设置为值之一的距离度量: "平方", "绝对", "欧几里德""symmkl". 如果 -测量信号,然后度量设置 -之间的距离 -m倒计时 -m倒计时 .

  • "平方" -欧几里德度量的平方,由差的平方和组成:

  • "欧几里德" -差异平方和的根,也称为欧几里德度量或 :

  • "绝对" -绝对差异的总和,也称为城市街区的距离,曼哈顿度量,出租车度量,或 :

  • "symmkl" -对称Kullback-Leibler度量。 此度量仅适用于实数和正数。 :

输出参数

# istart,istop — 段的开始和结束索引

+ 标量,标量 | 向量资料

Details

段的开始和结束索引,作为整数标量或向量返回。

# — 数据和信号之间的最小距离

+ 标量,标量 | 向量资料

Details

数据和信号之间的最小距离,作为标量或矢量返回。

例子:

在数据中查找信号

Details

我们将生成一个由高斯脉冲组成的数据集,其频率为 5 带带宽的Hz 50%,采样半秒,频率为 1 千赫。 让我们创建一个由正弦波的一个半周期组成的信号,频率为 10 赫兹。 让我们绘制数据集和信号。

import EngeeDSP.Functions: findsignal
import EngeeDSP.Functions: gauspuls

fs = 1e3

t = 0:1/fs:0.5
ts = 0:1/fs:0.15

data_result = gauspuls(t, 5, 0.5)
data = data_result.yc

signal = cos.(2π * 10 * ts)

p1 = plot(t, data, title="Data", legend=false)
p2 = plot(ts, signal, title="Signal", legend=false)

plot(p1, p2, layout=(2,1))

findsignal 1

让我们找到与信号的欧几里德距离平方最小的数据段。 让我们绘制数据图并突出显示此段。

result = findsignal(data, signal)

plot(t, data, label="Data", linewidth=2)
plot!(t[result[1]:result[1]+length(signal)-1], data[result[1]:result[1]+length(signal)-1],
      label="Signal", linewidth=3)
title!("Signal Matches Found")

findsignal 2

让我们向数据集中添加两个明显缺失的部分。 让我们找到最接近信号的段(就最小的绝对距离而言)。 让我们绘制数据图并突出显示此段。

dt = data
dt[(t .> 0.31) .& (t .< 0.32)] .= 2.1
dt[(t .> 0.32) .& (t .< 0.33)] .= -2.1

result = findsignal(dt,signal,"Metric","absolute")

plot(t, data, label="Data", linewidth=2)
plot!(t[result[1]:result[1]+length(signal)-1], data[result[1]:result[1]+length(signal)-1],
      label="Signal", linewidth=3)
title!("Signal Matches Found")

findsignal 3

让轴 x 如果拉伸导致最近的数据段与信号之间的绝对距离较小,则拉伸。

result = findsignal(dt,signal,"TimeAlignment", "dtw", "Metric","absolute")

plot(t, data, label="Data", linewidth=2)
plot!(t[result[1]:result[1]+length(signal)-1], data[result[1]:result[1]+length(signal)-1],
      label="Signal", linewidth=3)
title!("Signal Matches Found")

findsignal 4