Questions tagged «interpolation»

插值是一种在一组离散的已知数据点范围内构造新数据点的方法。

6
根据其样本计算波形的PDF
不久前,我尝试了不同的方式来绘制数字波形,而我尝试做的一件事是代替幅度包络线的标准轮廓,将其显示得更像示波器。这是示波器上的正弦波和方波: 最简单的方法是: 在输出图像的每个水平像素中将音频文件分成一个块 计算每个块的样本幅度直方图 通过亮度将直方图绘制为像素列 它产生如下内容: 如果每个块中有很多样本,并且信号的频率与采样频率无关,则效果很好。例如,如果信号频率恰好是采样频率的整数倍,则采样将始终在每个周期中以完全相同的幅度发生,并且直方图将只是几个点,即使在这些点之间存在实际的重构信号也是如此。该正弦脉冲应与左上角一样平滑,但这不是因为它正好是1 kHz,并且采样始终出现在相同的点附近: 我尝试增加采样数以增加点数,但这并不能解决问题,仅在某些情况下有助于解决问题。 因此,我真正想要的是一种从其数字样本(幅度与时间)计算连续重构信号的真实PDF(概率与幅度)的方法。我不知道该使用什么算法。通常,函数的PDF是其反函数的导数。 PDF的sin(x):ddxarcsinx=11−x2√ddxarcsin⁡x=11−x2\frac{d}{dx} \arcsin x = \frac{1}{\sqrt{1-x^2}} 但是我不知道如何计算逆函数是多值函数的波,或者如何快速进行计算。将其分解为分支,计算每个的逆,取导数并将它们加在一起?但这很复杂,而且可能有更简单的方法。 该“内插数据的PDF”也适用于我进行GPS轨迹的核密度估计的尝试。它应该是环形的,但是因为它仅查看样本,而没有考虑样本之间的插值点,所以KDE看起来更像是一个驼峰而不是一个圆环。如果我们只知道样本,那么这就是我们所能做的最好的。但是样本并不是我们所知道的。我们也知道样本之间存在一条路径。对于GPS,没有像带宽有限的音频那样完美的Nyquist重建,但是基本思想仍然适用,插值函数有些猜测。

3
级联双二阶部分以实现高阶滤波器的工作原理?
我正在尝试实现8阶IIR滤波器,并且我阅读的每个应用笔记和教科书都说,最好将2阶以上的任何滤波器实现为二阶部分。我tf2sos在MATLAB中使用了二阶部分的系数,这与我预期的4个二阶部分的6x4系数有关。在实施为SOS之前,八阶滤波器需要存储7个先前的采样值(以及输出值)。现在,当实现为二阶部分时,流程如何从输入到输出工作,我是否仅需要存储2个先前的样本值?还是第一个滤波器的输出馈x_in入第二个滤波器,依此类推?
20 filters  filter-design  infinite-impulse-response  biquad  audio  image-processing  distance-metrics  algorithms  interpolation  audio  hardware  performance  sampling  computer-vision  dsp-core  music  frequency-spectrum  matlab  power-spectral-density  filter-design  ica  source-separation  fourier-transform  fourier-transform  sampling  bandpass  audio  algorithms  edge-detection  filters  computer-vision  stereo-vision  filters  finite-impulse-response  infinite-impulse-response  image-processing  blur  impulse-response  state-space  linear-systems  dft  floating-point  software-implementation  oscillator  matched-filter  digital-communications  digital-communications  deconvolution  continuous-signals  discrete-signals  transfer-function  image-processing  computer-vision  3d 

2
频域零填充-X [N / 2]的特殊处理
假设我们希望通过频域中的零填充对偶数个样本(例如N = 8)的周期信号进行插值。 X=[A,B,C,D,E,F,G,H] 现在让我们将DFT 填充到16个样本中Y。我看到的每个教科书示例和在线教程在给出时都会插入零。 (然后是插值信号。)[Y4...Y11] Y=[2A,2B,2C,2D,0,0,0,0,0,0,0,0,2E,2F,2G,2H]y = idft(Y) 为什么不改为使用 Y=[2A,2B,2C,2D,E,0,0,0,0,0,0,0,E,2F,2G,2H]? 据我所知(我的数学知识有限): 它使总功率最小化 它确保如果x是实值,那么也是如此y y仍按要求x在所有采样点处相交(我认为这适用于任何p地方Y=[2A,2B,2C,2D,pE,0,0,0,0,0,0,0,(2-p)E,2F,2G,2H]) 那么为什么从来没有这样做呢? 编辑:x不一定是实数值或带限制的。

2
如何使用Parks-McClellan算法设计Nyquist插值滤波器?
我们可以使用Parks-McClellan算法轻松设计服从某些频域约束的插值滤波器。但是,目前尚不清楚如何实施时域约束。特别是,我对生成Nyquist过滤器感兴趣。因此,如果我对进行过采样,则对于非零整数N,我希望滤波器在处具有零交叉(这确保了插值器的输入采样将出现在输出序列中)。kNk 我看过Harris 1谈论一种设计半带滤波器的技术,即特例where N=2。有一个通用的解决方案吗?(我知道我们可以使用window方法轻松设计过滤器,但这并不能提供相同的控件。) [1] 通信系统的多速率信号处理,第208-209页


2
零填充奇数长度FFT时的实值振铃
因此,我正在尝试编写一个频域内插器,将信号的频率响应零填充并进行逆变换。我必须处理两种情况: 均匀长度的响应- 由于模棱两可,因此必须拆分 bin。因此,我复制频谱的负数部分,并在两者之间添加零。Fs/2Fs/2F_s/2n*(interp-1)-1 奇数长的响应-没有 bin,所以只需将正/负频率分开,然后在它们之间插入零。Fs/2Fs/2F_s/2n*(interp-1) 可以在此处看到执行零填充的代码 // Copy negative frequency components to end of buffer and zero out middle // inp - input buffer of complex floats // n - transform size // interp - interpolation amount void zero_pad_freq(cfloat_t *inp, size_t n, size_t interp) { if ((n % 2) …
13 fft  interpolation  c 

2
使用DFT进行亚像素图像移位如何真正起作用?
我正在尝试为涉及生成亚像素移位图像的应用程序评估几种图像插值方法的质量。我以为我可以将使用所有这些插值变量的子像素移位的结果与一些完美偏移的图像进行比较,但可能无法获得它(那么需要什么插值?)。 我当时正在考虑在频域中使用DFT +平移,但不确定与显式内插图像(使用双线性,双三次等)相比,它的实际工作方式。我敢肯定它不可能生成完美偏移的图像,但是我无法将手指放在上面。使用DFT进行子像素移位等效于应用插值吗?如果是,采用哪一个?使用此方法获得的图像中像素值的偏差是多少?谢谢! 编辑: 经过深思熟虑后,我认为由于FFT是原始函数在谐波(正弦函数)方面的近似值(甚至更是DFT),因此相当于某种三角插值。我回想起离散数据的“傅立叶级数插值”公式,该公式是三角插值法,但不确定是否已连接。

1
如何自动分类在不同位置测得的信号峰值?
我有麦克风在空间中许多不同位置上随时间测量声音。所记录的声音全部源自空间中的相同位置,但是由于从源点到每个麦克风的路径不同;信号将(时间)偏移和失真。已经使用先验知识来尽可能地补偿时间偏移,但是数据中仍然存在一些时间偏移。测量位置越近,信号越相似。 我对自动分类峰感兴趣。我的意思是说,我正在寻找一种算法,“看”下图中的两个麦克风信号,并从位置和波形“识别”出两个主要声音并报告其时间位置: sound 1: sample 17 upper plot, sample 19 lower plot, sound 2: sample 40 upper plot, sample 38 lower plot 为此,我计划在每个峰周围进行Chebyshev展开,并使用Chebyshev系数的向量作为聚类算法(k均值?)的输入。 作为示例,以下是在两个峰值(蓝色圆圈)附近的9个样本(红色)上的5个切比雪夫序列对两个附近位置(蓝色)测得的时间信号的一部分: 近似值非常好:-)。 然而; 上图的切比雪夫系数为: Clu = -1.1834 85.4318 -39.1155 -33.6420 31.0028 Cru =-43.0547 -22.7024 -143.3113 11.1709 0.5416 下图的切比雪夫系数为: Cll = 13.0926 16.6208 -75.6980 -28.9003 0.0337 Crl =-12.7664 …

1
我可以使用哪些插值方法来最紧密地拟合这些曲线?
我正在处理大脑的MRI图像,这些图像的某些区域用手或标记。 我正在尝试提出一个插值函数,该函数将让我描述这些曲线,以便可以使用机器学习技术在未标记的图像(例如和)上自动生成此类标记。 我已经考虑过使用三次样条插值法对曲线进行逼近,但是据我所知,我必须将曲线拆分为多个部分才能进行插值。 我是在正确的轨道上吗,还是有其他(更好的)方法来做到这一点?

2
查找样品之间的局部峰
我有地震信号y [ n ]的离散样本: ñnnÿ[ n ]y[n]y[n] 我想在信号中找到局部最大值。 ÿ[ n ]y[n]y[n]y[n]:maxima if y[n]>y[n−1] and y[n]>y[n+1]y[n]:maxima if y[n]>y[n−1] and y[n]>y[n+1]y[n]: maxima \textbf{ if } y[n] > y[n-1] \textbf{ and } y[n] > y[n+1] i=4.25i=4.25i=4.25 y[n]y[n]y[n] 如何使用插值法找到最大值? 我应该使用哪种插值形式? 如您所见,我的信号不是很嘈杂,但是如果该方法还进行了一些滤波以使最大值超过阈值并具有一定的宽度(没有尖峰),那将是很好的。 但是,我最大的问题只是在样品之间找到峰。有什么建议可以做到这一点吗? 预先感谢您的任何回答!

1
三次样条插值何时比插值多项式好?
下图是教科书中一个示例的细微变化。作者使用此示例说明,在等距样本上的插值多项​​式在插值间隔的末端附近具有较大的振荡。当然,三次样条插值可在整个时间间隔内提供良好的近似值。多年来,我认为由于此处说明的原因,应避免在等距样本上进行高阶多项式插值。 但是,我最近发现了许多带限信号的示例,其中高阶插值多项式给出的逼近误差小于三次样条插值。通常,当采样率足够高时,插值多项式在整个插值间隔内会更准确。当样本以至少比信号的奈奎斯特频率大3倍的采样率均匀分布时,这似乎成立。此外,三次样条插值的优势随着(采样率)/(奈奎斯特频率)的增加而提高。 举例来说,我将三次样条插值与一个正弦波的内插多项式进行比较,该正弦波的奈奎斯特频率为2 Hz,采样率为6.5 Hz。在采样点之间,插值多项式看起来与实际信号完全相同。 下面,我比较两个近似中的误差。与第一个示例一样,多项式插值在采样间隔的开始和结束附近表现最差。但是,在整个采样间隔内,内插多项式的误差小于三次样条曲线。插值多项式在较小的时间间隔上进行插值时误差也较小。我发现了一个众所周知的事实吗?如果是这样,我在哪里可以读到它?

3
零,一,二... n阶保持
矩形函数被定义为: rect(t)=⎧⎩⎨⎪⎪⎪⎪0121if |t|&gt;12if |t|=12if |t|&lt;12.rect(t)={0if |t|&gt;1212if |t|=121if |t|&lt;12.\mathrm{rect}(t) = \begin{cases} 0 & \mbox{if } |t| > \frac{1}{2} \\ \frac{1}{2} & \mbox{if } |t| = \frac{1}{2} \\ 1 & \mbox{if } |t| < \frac{1}{2}. \\ \end{cases} 三角形函数被定义为: tri(t)={1−|t|,0,|t|&lt;1otherwisetri⁡(t)={1−|t|,|t|&lt;10,otherwise\operatorname{tri}(t) = \begin{cases} 1 - |t|, & |t| < 1 \\ 0, & \mbox{otherwise} …

1
如何使用Savitzky Golay滤波器在离散采样的1D信号中找到局部最大值(在采样之间)?
我有一个地震信号y(i): 在这里,我找到了一个最大值:手动将i = 152.54,y = 222.29绘制为红色。 我想自动查找所有最大值。 我读到,Savitzky Golay滤波器(SGF)可用于找到信号及其导数的平滑估计,并且SGF的好处之一是它比其他滤波器更好地保留了最小值和最大值。这对我来说听起来很棒。 我发现了一个生成SGF系数的Matlab脚本。 并以此发现导数的四阶SGF系数。我编写了一个小的Matlab脚本 通过将信号与导数的4阶SGF系数进行卷积来找到信号的导数 查找导数更改符号的样本对(i,i + 1) 通过i和i + 1之间的线性插值找到导数的零交叉 脚本: function [maxX,maxY] = findLocalMax(y) % Kernel for 4th order Savitzky-Golay filter for finding derivative: d4 = [0.0724 -0.1195 -0.1625 -0.1061 0 0.1061 0.1625 0.1195 -0.0724]; dy = conv(y,d4,'same'); % derivative [m …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.