Questions tagged «algorithms»

算法是在定义明确的指令步骤的有限列表中表达的一种方法,用于处理信号。

10
混合音频信号而不削波的算法
我想以忠实于声音的方式(最好是近实时)(意味很少或根本没有预见)以数字方式混合两个或多个PCM音频通道(例如,记录的样本)。 物理上“正确”的方法是对样本求和。但是,当您添加两个任意样本时,结果值可能高达最大值的两倍。 例如,如果您的样本是16位值,则结果最多为65536 * 2。这导致剪裁。 幼稚的解决方案是除以N,其中N是要混合的声道数。然而,这导致每个样本的响度仅为1 / Nth,这是完全不现实的。在现实世界中,当两个乐器同时演奏时,每个乐器的音量不会变成一半。 从阅读的角度来看,一种常见的混合方法是:结果= A + B-AB,其中A和B是要混合的两个归一化样本,而AB是确保更大声的声音越来越“柔和”的术语。 但是,这会导致信号失真。这种失真水平在高质量音频合成中可以接受吗? 还有什么其他方法可以解决此问题?我对高效的低质量算法以及低效率的高质量算法感兴趣。 我是在数字音乐合成的背景下问我的问题,目的是将多个乐器音轨混合在一起。音轨可以是合成音频,预先录制的样本或实时麦克风输入。


4
有什么好的方法可以检测记录中的信号削波?
给定记录,我需要检测是否发生了任何剪辑。 我可以安全地得出结论:如果有一个(一个)样本达到最大样本值,就会出现削波现象,还是我应该寻找一系列后续的最大样本值? 记录可以取自16或24位A / D转换器,并转换为范围内的浮点值。如果这种转换通过采用的划分的形式2 15 - 1或2 23 - 1,则推测负峰值可以稍微小于-1,并与值-1样品没有限幅?− 1 ... 1−1...1-1...1215− 1215−12^{15}-1223−1223−12^{23}-1 显然,人们总是可以创建一种专门打败削波检测算法的信号,但是我正在查看语音,音乐,正弦波或粉红/白色噪声的录音。
32 audio  algorithms 

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
最快的距离变换算法
我正在寻找距离转换最快的可用算法。 根据此站点http://homepages.inf.ed.ac.uk/rbf/HIPR2/distance.htm,它描述了: 使用聪明的算法仅需两遍就可以更有效地计算距离变换(例如Rosenfeld和Pfaltz 1968)。 到处搜寻,我发现:“ Rosenfeld,A和Pfaltz,J.L。1968。数字图片上的距离函数。模式识别,1,33-61。” 但是我相信我们应该有一个比1968年更好,更快的算法吗?实际上,我找不到1968年的消息来源,因此非常感谢您的帮助。

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
用文字描述逆短时傅立叶逆变换算法
我试图从概念上理解将正向和反向短时傅立叶变换(STFT)应用于离散时域信号时发生的情况。我找到了Allen和Rabiner(1977)的经典论文,以及Wikipedia的文章(链接)。我相信,还有另一个好文章被发现在这里。 我对计算Gabor变换感兴趣,这无非是带有高斯窗口的STFT。 这是我对前向 STFT的了解: 从信号中选择一个子序列,该子序列由时域元素组成。 使用时域中的逐点乘法,将子序列乘以窗口函数。 使用FFT将相乘的子序列带入频域。 通过选择连续的重叠子序列,并重复上述过程,我们得到了一个具有m行n列的矩阵。每一列是在给定时间计算的子序列。这可以用于计算频谱图。 但是,对于逆 STFT,论文讨论了重叠分析部分的求和。我发现可视化这里发生的事情非常具有挑战性。为了能够计算反 STFT(如上所述,按逐步顺序),我必须做什么? 前向STFT 我创建了一个图,显示了我认为前向STFT正在进行的工作。我不了解的是如何组装每个子序列,以便获得原始时间序列。有人可以修改此图形或给出一个方程式来显示如何添加子序列吗? 逆变换 这是我对逆变换的了解。使用IFFT将每个连续的窗口带回到时域。然后,将每个窗口移动步长,然后将其添加到上一个移动的结果中。下图显示了此过程。相加的输出是时域信号。 代码示例 下面的Matlab代码生成一个合成的时域信号,然后测试STFT过程,证明在数值舍入误差内,逆是正向变换的对偶。信号的开始和结尾都进行零填充,以确保窗口的中心可以位于时域信号的第一个和最后一个元素。 ñ+ N0− 1ñ+ñ0-1个N + N_0 - 1ñ0ñ0N_0 % The code computes the STFT (Gabor transform) with step size = 1 % This is most useful when modifications of the signal is required in …

5
拟合分段线性数据
拟合分段线性但有噪声的数据的可靠方法是什么? 我正在测量一个信号,它由几个几乎线性的部分组成。我想将几行原子地拟合到数据中以检测过渡。 数据集由几千个点组成,包含1-10个细分,而我知道细分的数量。 这是我想自动执行的示例。
18 algorithms 

3
轮廓匹配-查找轮廓位移
我在具有相同对象的两幅图像上找到了轮廓,我想找到该对象的位移和旋转。我尝试过使用该轮廓的旋转边界框,然后使用其角度和中心点,但是边界框的旋转不能正确显示轮廓旋转,因为角度a + 0,a + 90,a + 180等相同。度。还有其他寻找轮廓旋转和位移的好方法吗?也许有些使用凸包,凸缺陷?我已经在学习OpenCv中阅读过有关匹配轮廓的信息,但并没有帮助。有人可以举例吗? 例子: 我想检测例如粉红色的正方形,在第二种情况下使用笔。其他示例可能是带有一些孔,星星等的正方形。正如我所说,我想做一些全盘的事情。感谢任何建议,因为我想测试尽可能多的方法。

7
DFT和FFT之间的哪些区别使FFT如此快速?
我正在尝试了解FFT,这是到目前为止的内容: 为了找到波形中的频率幅度,必须在两个不同的相位(正弦和余弦)中将电波乘以它们正在搜索的频率,然后对它们进行平均,从而对它们进行探测。该阶段是通过与两者之间的关系找到的,其代码如下所示: //simple pseudocode var wave = [...]; //an array of floats representing amplitude of wave var numSamples = wave.length; var spectrum = [1,2,3,4,5,6...] //all frequencies being tested for. function getMagnitudesOfSpectrum() { var magnitudesOut = []; var phasesOut = []; for(freq in spectrum) { var magnitudeSin = 0; var magnitudeCos …
16 fft  dft  algorithms 


2
位图Alpha斜角算法?
我正在寻找一种创建算法,该算法使用Alpha作为凹凸贴图将斜角效果添加到位图。 我将如何去做这样的事情?我尝试了镜面照明,但只得到高光而不是阴影。 这是我正在谈论的效果(使用Photoshop制作): 所有这些都使用size: 30px(从位图轮廓到斜角的深度)angle 130,,来完成altitude 50。 从左到右,从上到下: 凿子硬锥 凿子软锥 平滑斜角 凿子硬soften: 16px-斜角模糊? 我正在尝试创建每种效果,我将如何创建基本斜角?而我需要从那个斜角获得每个

1
估计噪音突然爆发的开始时间?
可以使用哪些技术来估计噪声信号中正弦音调突发的开始时间? 假设音调突发具有已知的固定频率(但相位未知)和非常陡峭的上升时间,并且目标是在不到上升时间的一半和/或音调频率的一个周期内估计开始时间, 如果可能的话。如果信噪比非常低(远小于1),估计技术将如何改变? 补充:假设音频脉冲串的长度未知,但比上升时间和频率周期的一小部分长。 补充:DFT / FFT显示了很可能存在音调。问题是要精确地找出在FFT窗口内的音调(或相同频率的多个音调猝发)可能在FFT窗口中的何处开始,或者确定当前音调是否从该DFT窗口之外开始,其他时域数据。 雷达脉冲检测的精度更接近于我需要的分辨率,除了我只有一个边缘,因为音调的长度未知,并且除了已知的上升时间以外,均未调制。窄带通滤波器会使上升时间失真,从而使边缘到达估计分辨率降低。

1
FPGA上定点atan2的计算方法
我需要atan2(x,y)在具有连续输入/输出数据流的FPGA上进行计算。我设法使用展开的,流水线的CORDIC内核来实现它,但是要获得所需的精度,我必须执行32次迭代。这导致大量的LUT致力于这一任务。我尝试将流更改为使用部分展开的CORDIC内核,但随后我需要一个倍频的时钟频率以执行重复循环,同时仍保持连续的输入/输出流。因此,我无法满足时机要求。 因此,现在我正在寻求替代的计算方式atan2(x,y)。 我考虑过使用带插值的Block-RAM查找表,但是由于有2个变量,因此我需要2维查找表,这在Block-RAM的使用方面非常耗费资源。 然后,我考虑使用与象限调整atan2(x,y)有关的事实atan(x/y)。问题在于,x/y由于y不是常数,因此需要真正的划分,而FPGA上的划分非常占用资源。 是否有更多新颖的方法可atan2(x,y)在FPGA 上实现,从而降低LUT使用率,但仍提供良好的准确性?
12 algorithms 

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.