非均匀采样信号的重采样
这个例子展示了如何将非均匀采样信号重新采样到一个新的统一速率。它展示了如何对不规则采样数据应用自定义过滤器以减少混叠。它还展示了如何使用去趋势去除信号开始和结束时的瞬态。
将非均匀采样信号重采样到期望速率
的重新取样
函数允许您将非均匀采样信号转换为新的均匀速率。
创建一个500hz正弦采样不规则约48khz。我们通过在均匀向量上添加随机值来模拟不规则性。
rng默认的nominalFs = 48000;F = 500;Tx = 0:1/nominalFs:0.01;irregTx = sort(Tx + 1e-4*rand(size(Tx)));x = sin(2*pi*f*irregTx);情节(irregTx x,“。”)
要重新采样非均匀采样的信号,可以调用重新取样
输入一个时间向量。
下一个例子将原始信号转换为统一的44.1 kHz速率。
desiredFs = 44100;[y, Ty] = resample(x,irregTx,desiredFs);情节(irregTx x,“。”泰y“啊——”)传说(“原始”,重新取样的) ylim([-1.2 1.2])
你可以看到我们重新采样的信号与原始信号具有相同的形状和大小。
插值方法的选择
中的转换算法重新取样
当输入样本尽可能接近规则间隔时,效果最好,因此观察当输入样本的一部分从采样数据中缺失时会发生什么是有指导意义的。
下一个例子剔除输入正弦信号的第二个波峰并应用重采样。
irregTx(105:130) = [];x = sin(2*pi*f*irregTx);[y, Ty] = resample(x,irregTx,desiredFs);情节(irregTx x,“。”)举行在情节(泰,y,“。”)举行从传奇(“原始”,重新取样的) ylim([-1.2 1.2])
缺失的部分通过线性插值连接。函数使用的默认方法是线性插值重新取样
函数重新采样非均匀采样的数据。
在某些情况下,您的输入中有丢失的数据或较大的空白,您可以通过选择不同的插值方法来恢复一些丢失的数据。
对于低噪声、低带宽的信号,样条可以非常有效地重建原始信号。在重采样过程中使用三次样条,提供'样条'插值方法:
[y, Ty] = resample(x,irregTx, desredfs,样条的);情节(irregTx x,“。”)举行在情节(泰,y,“。”)举行从传奇(“原始”,“使用样条重新采样”) ylim([-1.2 1.2])
控制插值网格
默认情况下,重新取样
构造一个中间网格,它是信号的期望采样率和平均采样率之间比值的接近有理近似。
如果输入样本的一部分包含高频成分,您可以通过选择整数系数来控制中间网格的间距,p
而且问
,来选择这个合理比值。
检查一个欠阻尼二阶滤波器的阶跃响应,振荡速率约为3hz:
W = 2*pi*3;D = .1002;Z = sin(d);A = cos(d);T = [0:05:2 3:8];X = 1 - exp(-z*w*t).*cos(w*a*t-d)/a;情节(t x,“。”)
阶跃响应在振荡时以高速率采样,在不振荡时以低速率采样。
现在使用默认设置重新采样100hz的信号:
Fs = 100;[y, Ty] = resample(x,t,Fs);情节(t x,“。”)举行在情节(泰,y)从传奇(“原始”,'重新采样(默认设置)')
波形开始处振荡的包络被衰减,并且比原始信号振荡得更慢。
重新取样
,默认情况下,插值到一个规则间隔的网格,对应于输入信号的平均采样率。
avgf = (number (t)-1) /(t(end)-t(1))
avgFs = 5.7500
网格的采样率应该高于您希望测量的最大频率的两倍。网格的采样率为每秒5.75个采样,低于振铃频率的奈奎斯特采样率6hz。
为了使网格具有更高的采样率,您可以提供整数参数,p
而且问
.重新取样
将网格的采样率调整为Q*Fs/P,对信号进行插值,然后应用其内部的采样率转换器(上采样P,下采样Q)来恢复所需的采样率Fs。使用老鼠
选择p
而且问
.
由于振荡的振铃是3hz,指定网格的采样率为7hz,略高于奈奎斯特速率。由于衰减的指数包络线,1hz的净空占了额外的频率内容。
Fgrid = 7;[p,q] =鼠(f /Fgrid)
P = 100
Q = 7
[y, Ty] = resample(x,t,Fs,p,q);情节(t x,“。”)举行在情节(泰,y)从传奇(“原始”,重采样(自定义P和Q))
指定抗混叠过滤器
在下一个示例中,您可以查看测量飞机发动机油门设置的数字化仪的输出。节流阀设置的采样不均匀,约为100 Hz的名义速率。我们将尝试以统一的10赫兹速率重新采样此信号。
这是原始信号的样本。
负载engineRPM情节(t x,“。”)包含(“时间(s)”) ylabel (“转”)
信号是量子化的。现在在20秒到23秒的时间间隔内放大上升区域:
情节(t x,“。”xlim([20 23])
信号在这个区域内缓慢变化。这允许您通过使用重采样器中的抗混叠滤波器来去除一些量化噪声。
desiredFs = 10;[y,ty] = resample(x,t,desiredFs);情节(t x,“。”)举行在情节(泰,y,“。”)举行从包含(“时间”) ylabel (“转”)传说(“原始”,重新取样的xlim([20 23])
这工作得相当好。然而,重新采样的信号可以通过提供进一步平滑重新取样
具有低截止频率的滤波器。
首先,将网格间距设置为大约我们的标称100 Hz采样率。
nominalFs = 100;
接下来,确定一个合理的p
而且问
以获得所需的速率。因为名义频率是100hz,而我们想要的频率是10hz,所以你需要以十进制数减去10。这相当于设置p
To 1和设置问
到10。
P = 1;Q = 10;
你可以提供重新取样
用你自己的滤镜。为了获得适当的时间对齐,过滤器的长度应该是奇数。滤镜长度应大于几倍p
或问
(以较大者为准)。设置截止频率为1 /问
然后将得到的系数乘以p
.
%确保一个奇数长度的过滤器N = 10*q+1;%使用奈奎斯特范围的0.25的期望抽样率cutoffRatio = .25;%构造低通滤波器lpFilt = p * fir1(n, cutoffRatio * 1/q);%重新采样并绘制响应[y,ty] = resample(x,t,desiredFs,p,q,lpFilt);情节(t x,“。”)举行在情节(泰,y)从包含(“时间”) ylabel (“转”)传说(“原始”,“重新采样(自定义过滤器)”,“位置”,“最佳”xlim([20 23])
删除端点效果
现在缩小来查看原始信号。注意,在端点处有显著的偏移。
情节(t x,“。”泰,y)包含(“时间”) ylabel (“转”)传说(“原始”,'重采样(自定义过滤器)',“位置”,“最佳”)
这些工件的产生是因为重新取样
假设信号在信号边界外为零。为了减少这些不连续的影响,在信号的端点之间减去一条线,执行重新采样,然后将这条线加回原始函数。您可以通过计算第一个和最后一个样本之间的直线的斜率和偏移量来做到这一点,并使用polyval
画一条直线来做减法。
计算斜率和偏移量(y = a1 x + a2)A (1) = (x(end)-x(1)) / (t(end)-t(1));A (2) = x(1);%趋向信号xdettrend = x - polyval(a,t);情节(t, xdetrend)
去趋势信号现在两个端点都接近于零,这减少了引入的瞬态。调用重新取样
然后再加上趋势。
[ydettrend,ty] = resample(xdettrend,t,desiredFs,p,q,lpFilt);Y = ytrend + polyval(a,ty);情节(t x,“。”泰,y)包含(“时间”) ylabel (“转”)传说(“原始”,“重采样(去趋势,自定义过滤器)”,“位置”,“最佳”)
总结
这个例子展示了如何使用重新取样
将均匀采样信号和非均匀采样信号转换成固定速率。
进一步的阅读
有关使用自定义样条重构非均匀间隔样本的更多信息,可以参考曲线拟合工具箱™文档。