Engee 文档

再采样

以新的固定采样率重新采样均匀或不均匀分布的数据。

库::`工程师`

语法

函数调用

  • [参数:y]=重采样(<参数:x>>,<参数:p>>,<参数:q>>) -执行输入序列的重新采样 [参数:x] 用采样率,在 [参数:p]/<参数:q>> 比原来高出一倍。 功能 重采样 适用于 [参数:x] [抗混叠-低通滤波器]具有有限脉冲响应(fir)并补偿滤波器引入的延迟。 该函数适用于数组的第一维,其大小较大 1.

  • [参数:y]=重采样(<参数:x>>,<参数:p>>,<参数:q>>,<参数:n>>,<参数:beta>>) -定义用于设计低通滤波器的Kaiser窗口的形状参数。

  • [参数:y]=重采样(<参数:x>>,<参数:tx>>,<参数:fs>>) -使用多相平滑滤波器以参数中指定的均匀采样率重新采样信号 [参数:fs].

  • ___ =重采样(___,Dimension=dim) -对测量输入数据进行重新采样 [参数:暗淡].

争论

输入参数

# x — 输入信号

+ 向量资料 | 矩阵 | 一个N维数组

Details

指定为矢量、矩阵或N维数组的输入信号。 论点 x 可能包含值 如果有关于时间的信息。 价值 它们被认为是缺失的数据,并被排除在重新采样之外。

数据类型

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

# *p*是 的重采样系数

+ 一个正整数

Details

的重采样系数,设为正整数。

数据类型

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

# *q*是 的重采样系数

+ 一个正整数

Details

的重采样系数,设为正整数。

数据类型

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

# *n*是 相邻元素的数量

+ 10 (默认情况下)| 一个非负整数

Details

邻元素的个数,设为非负整数。 如果 n=0,功能 重采样 执行最近邻插值。 平滑FIR滤波器的长度与 n. 大值 n 它们通过增加计算时间来提供更高的精度。

数据类型

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

# 贝塔 — Kaiser窗口形状参数

+ 5 (默认情况下)| 正实标量

Details

的Kaiser窗口形状参数,设置为正实标量。 增加争论 贝塔 扩展用于构建平滑滤波器的窗口的主瓣,并且减小窗口的旁瓣的幅度。

数据类型

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

# b — FIR滤波器系数

+ 向量资料

Details

FIR滤波器系数,指定为矢量。 默认函数为 重采样 使用函数设计过滤器 鹿firls 还有皇帝的窗户。 当补偿延迟时,功能 重采样 假设输入参数为 b 它具有奇数长度和线性相位。 有关详细信息,请参阅[抗混叠-低通滤波器]

数据类型

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

# tx — 时间 积分+ 非负实向量 | 日期时间

Details

指定为非负实向量或数组的时间点 日期时间. 论点 tx 它应该单调增加,但不必均匀分布。 tx 可能包含值 . 这些值被视为缺失数据,并从重采样中排除。 论点 tx 假设仅针对输入值 [参数:x].

数据类型

漂浮物32, 漂浮64, 日期时间</无翻译>

# 财政司司长 — 抽样调查 费率+ 正标量

Details

的采样率,设置为正标量。 采样率是单位时间内的样本数。 如果时间的测量单位是秒,那么采样频率以Hz表示。

数据类型

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

# 方法 — 插值方法

+ "线性" (默认情况下)| "pchip" | "样条"

Details

的插值方法,定义为 "线性", "pchip""样条":

  • "线性" -线性插值;

  • "pchip" -分段三次保形插值;

  • "样条" -在两端使用"not-a-knot"条件进行样条插值。

有关更多信息,请参阅页面 国际刑警组织.

如果 [参数:x] 如果变化不慢,请考虑使用该函数 国际刑警组织 用插值法 "pchip".

名称-值输入参数

# 昏暗 — 为其执行操作的测量

+ 正整数标量

Details

对其执行操作的维度,指定为正整数标量。 如果论点是 昏暗 未指定,功能 重采样 它是在数组的第一个维度上进行的,其大小较大 1.

数据类型

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

输出参数

# *y*是 重采样信号

+ 向量资料 | 矩阵 | 一个N维数组

Details

作为向量、矩阵或N维数组返回的重采样信号。 如果输入参数是 [参数:x] 具有长度为 通过测量 [参数:暗淡],并且还指定了参数 [参数:p][参数:q],则输出参数为 y 具有长度为 通过测量 昏暗.

# b — FIR滤波器系数

+ 向量资料

Details

Fir滤波器系数作为向量返回。

# ty — 输出数据

+ 非负实向量

Details

作为非负实向量返回的输出数据。 论点 仅适用于输入值 [参数:x].

例子:

线性序列的重新采样

Details

让我们用频率重新采样一个简单的线性序列 3/2 从原来的 10 赫兹。 让我们在一个图中绘制原始序列和重复采样的序列。

import EngeeDSP.Functions: resample

using Plots

fs = 10
t1 = 0:1/fs:1
x = t1

result = resample(x, 3, 2)
y = result.y

t2 = (0:(length(y)-1)) * 2 / (3 * fs)

plot(t1, x,
     seriestype = :scatter,
     marker = :xcross,
     markerstrokecolor = :blue,
     label = "Original",
     xlabel = "Time (s)",
     ylabel = "Signal",
     legend = :topleft)
plot!(t2, y,
      seriestype = :scatter,
      marker = :circle,
      markerstrokewidth = 1,
      markerstrokecolor = :orange,
      markercolor = :white,
      label = "Resampled")

resample 1

多通道信号的重新采样

Details

我们将产生一个五通道正弦信号与 100 通过倒计时。 时间以列为单位增加,频率以行为单位增加。 让我们绘制信号。

import EngeeDSP.Functions: resample

using Plots

p=3
q=2

tx=0:p:300-p

x=[cos.(2π*tx。/(freq*100))for freq in1:5]
x=hcat(x...)

情节(tx,x,
     标记=:圆,
     markersize=2,
     linestyle=:点,
     seriestype=:路径,
     标题="原创",
     ylims=(-1.5,1.5),
     传说=错误)

resample 2

通过增加正弦波的采样频率 3/2 在第二维度中。 让我们把重新采样的信号放在图表上。

ty = 0:q:300-q
result = resample(x, p, q)
y = result.y

plot(ty, y,
     marker = :circle,
     markersize = 2,
     linestyle = :dot,
     seriestype = :path,
     title = "Upsampled",
     ylims = (-1.5, 1.5),
     legend = false)

resample 2 1

让我们改变重新采样信号的形状,以便时间沿着第三维度传递。

y = reshape(y, 1, size(y, 1), size(y, 2))
y = permutedims(y, [3, 1, 2])
size(y)
(5, 1, 150)

让我们将信号的采样频率降低到初始频率并构建一个图形。

result_z = resample(y, q, p, Dimension=3)
z = result_z.y
z = dropdims(z, dims=2)

plot(tx, z',
     marker = :circle,
     markersize = 2,
     linestyle = :dot,
     seriestype = :path,
     title = "Downsampled",
     ylims = (-1.5, 1.5),
     legend = false)

resample 2 2

此外

低通平滑滤波器

Details

用有理系数重新采样信号 [参数:p]/<参数:q>> 功能 重采样 调用函数 向上确认,其执行以下操作:

  1. 插入零,以增加信号的采样 [参数:p].

  2. 对采样增加的信号应用抗混叠FIR滤波器。

  3. 下降的样本,以降低滤波信号的采样 [参数:q].

理想的平滑滤波器具有归一化截止频率。 rad/计数和增益 [参数:p]. 为了近似平滑滤波器,函数 重采样 使用Kaiser窗口方法。

作为一个例子,我们将设计一个抗混叠滤波器来重新采样信号到采样频率,在 3/2 初始值的两倍:

p = 3
q = 2
maxpq = max(p, q)

fc = 1 / maxpq
n = 10
order = 2 * n * maxpq
beta = 5

b = fir1(order, fc, kaiser(order + 1, beta))
b = p * b / sum(b)

算法

功能 重采样 使用函数执行FIR设计 鹿firls,将结果归一化以考虑窗口增益,然后使用函数实现采样率的变化 向上确认.