问题标签 [cross-correlation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4825 浏览

c# - 使用卷积在连续的声音流中找到参考音频样本

我之前关于在更大的音频样本中寻找参考音频样本的问题中,有人建议我应该使用卷积。
使用DSPUtil,我能够做到这一点。我用它玩了一点,尝试了不同的音频样本组合,看看结果如何。为了可视化数据,我只是将原始音频作为数字转储到 Excel 中,并使用这些数字创建了一个图表。一个峰值可见的,但我真的不知道这对我有什么帮助。我有这些问题:

  • 我不知道,如何从峰值位置推断原始音频样本中匹配的起始位置。
  • 我不知道,我应该如何将它应用到连续的音频流中,这样我就可以在参考音频样本出现后立即做出反应。
  • 我不明白,为什么图 2 和图 4(见下文)差异如此之大,尽管它们都代表了一个与自身卷积的音频样本......

非常感谢任何帮助。

以下图片是使用Excel分析的结果:

  1. 一个较长的音频样本,参考音频(哔声)接近尾声:
  2. 哔哔声与自身卷积:
  3. 没有哔声的较长音频样本与哔声卷积:
  4. 第 3 点的较长音频样本与自身卷积:

更新和解决方案:
感谢Han的广泛帮助,我能够实现我的目标。
在我推出自己的没有 FFT 的慢速实现之后,我发现alglib提供了一种快速实现。我的问题有一个基本假设:其中一个音频样本完全包含在另一个音频样本中。
因此,以下代码返回两个音频样本中较大的样本中的偏移量以及该偏移量处的归一化互相关值。1 表示完全相关,0 表示完全不相关,-1 表示完全负相关:

赏金:
不需要新的答案!我开始赏金将其奖励给 Han,以表彰他在这个问题上的持续努力!

0 投票
1 回答
1902 浏览

visual-c++ - Opencv中的相关函数

帮我学习Opencv中的相关函数。

我已经阅读了一些参考资料,但我无法得到正确的想法。使用相关性,我可以通过考虑原始图像和另一个图像之间的关系来匹配两个图像并为其分配权重。? (因为我想匹配 2 个相同但不是 100% 相同的图像)是一种模板匹配...?

我想知道是否有人可以在网络中的某个地方为我指出 C++ 中的示例代码。

谢谢

0 投票
2 回答
24723 浏览

math - 关于互相关和相关系数的问题

可能重复:
Matlab 互相关与相关系数问题

当我在 MATLAB 中交叉关联 2 个数据集ab(每个 73 个点长)并绘制它时,它看起来像一个有 145 个点的三角形。当我绘制范围为 +/- 1 的互相关输出时,我对相关系数和类三角形图感到困惑。

0 投票
3 回答
49446 浏览

matlab - 不使用内置函数的matlab中的互相关?

有人可以告诉如何在不使用内置函数xcorr和相关系数的情况下在 MATLAB 中对两个语音信号(每个 40,000 个样本)进行互相关吗?

提前致谢。

0 投票
1 回答
201 浏览

groovy - 如何在 Groovy 中选择 X 位置的 Y 值?

这是一个数学问题...

在此之前我有一个关于标准化每月数据的问题: 如何生成拉伸图的 X 值?

我得到了一个很好的答案,而且效果很好,唯一的问题是现在我需要检查一个月的 X 值,其中 31 天与一个月的 X 值,其中 28 天。

所以我的问题是:如果我有两组这样的参数:

如您所见,这两个数据集的总体趋势是相同的。但是,如果我通过互相关函数(一般目标)运行这些值,我会得到一些不反映这一点的东西,因为数据集有两种不同的大小。

例如,如果您正在跟踪您每天跑了多少英里,那么现实世界的例子是:

在二月(28 天)的第一周,你每天跑一英里。在第二周,你每天跑两英里,等等。

在 3 月(31 天),你做同样的事情,但是跑一英里八天,跑两英里八天,跑三英里八天,跑四英里七天。

根据以下函数,相关系数应该几乎正好为 1:

仅查看数据集,如果我要获取 1、2、3、4、5、6、7、8、9 和 10 的值,图表似乎完全相同,并且函数将产生更准确的结果。

但是,由于长度不同,因此它是倾斜的。

有没有办法定位十二值数据集中整数的值是什么?我还没有找到一种简单的方法来做到这一点,但这将非常有帮助。

提前致谢,

5

编辑:根据请求,这里是生成图形 X 值的代码:

编辑:根据另一个请求不工作代码:

如果我将 o 变量声明中的“march”切换为 (1..31),则脚本运行成功。当我尝试使用“march”时,我得到“java.lang.NullPointerException: Cannot invoke method getAt() on null object”

另外:我尽量不直接复制代码,因为这是不好的做法,所以我更改的功能之一基本上做同样的事情,它只是我的版本。我最终也会着手重构其余部分。但这就是为什么它略有不同。

0 投票
4 回答
6521 浏览

matlab - 我正在尝试编写一个代码来将发送的信号与接收的信号进行交叉相关以确定样本延迟的数量

互相关将用于通过发射已知的宽带信号并将发射信号与通过雷达接收盘接收的输入信号相关来测量与飞机的距离

发送的信号x(n)的长度为N=512,而接收的信号y(n)的长度为N=2048。

y(n)=kx(nd)+w(n);其中“kx(nd)”是 x(n) 延迟了 d 个样本并衰减了因子 k,w(n) 是接收噪声。

我正在尝试编写一个 MATLAB 程序来交叉关联 x(n) 与 y(n) 以确定 d 的值,即样本延迟的数量。如果发送和接收的数据以光速传播,如果要在 50 km 内确定到飞机的距离,精度为 50 m,则还要确定合适的采样频率。

0 投票
1 回答
333 浏览

algorithm - 图像移动校准

我在一段时间内拍摄了一系列基本相同的图像。然而,图像中的物体会随着时间的推移而漂移,我想对此进行纠正。这样做有什么好处?

[编辑] 好的,我可能不得不解释我为什么要这样做。我拍摄了一系列不同 X 射线能量的物体的 X 射线图像。我现在想比较对象是各种能量,但由于它会漂移,我必须先纠正漂移。该物体没有锋利的边缘或任何易于用于对齐的东西。因此我正在寻找一种更通用的方法

0 投票
1 回答
1734 浏览

iphone - 使用 FFT 和加速框架理解自相关 - iPhone

我一直在尝试使用 Apple 提供的 vDSP 库(加速框架)在 iPhone 上实现自相关算法。

到目前为止,我按照苹果的 auriotouch 示例创建了一个音频单元,但我想使用加速框架来执行自相关,而不是 auriotouch 示例代码中的旧实现。

IORemote 音频单元通过我的 renderCallBack 方法路由,如下所示:

根据这篇文章中的 c++ 片段,来自麦克风的输入数据被发送到执行自相关的 ProcessAudioData 方法:Using the Apple FFT and Accelerate Framework

但是我在理解 displaydata 数组中的信息时遇到了一些麻烦。

当我尝试访问信息时,我得到的只是 nan,我唯一了解信息的时候是当我像这样投射 displaydata 数组时:

SInt16* buf = (SInt16 *)displayData;

计算自相关的步骤我遵循以下步骤: - 将实际输入 (ioData->mBuffers[0].mData) 拆分为偶数和奇数输入。- 执行 FFT(向前) - 取 FFT 生成的值的绝对平方。- 采用 IFFT(反向/反向) - 将复数拆分转换为实数。

有人可以给我一些关于如何解释显示数据数组中的信息的指示/建议,当我检查这样的显示数据时,它们似乎都是相同的值,尽管它们确实会因麦克风输入而异。

麦克风的输入预期是带有原始信号的一些回声的信号,自相关的目标是确定自相关峰值的滞后,以便我可以确定回声与原始信号的偏移量。

我是否应该首先创建信号的回声版本(带有一些偏移)并在 FFT 的多个值中使用它?

我很感激任何意见,如果你能指导我获得更清楚地解释这一点的信息,因为我对 vDSP 技术相当陌生,尤其是在 iPhone 上。我确实有卷积和傅立叶变换的数学经验,但苹果的就地包装让我猜测我在哪里可以找到我希望从这个计算中获得的信息。

0 投票
1 回答
2205 浏览

matlab - 信号的相关性

您好,我有两个复杂的函数(大小 1x1x2501),我需要在这些函数之间建立相关性(互相关)。

我试过使用这个命令:

其中 Hmimo_tb 和 Hmimo_tb1 是我的两个信号,唯一的区别是它们是在不同位置测量的。这两个信号之间的差异最大等于 1.5e-13,因此它们仅受噪声影响。

当我使用 xcorr 并分析“c”时,我发现它很复杂,所以我这样做:

这样我就拥有了所有真实值,在滞后 0 附近归一化。我的问题是我必须构建一个具有相关系数的矩阵。我的意思是我应该有这样的东西:

其中 1 是矩阵上侧第一个的 corr (Hmimo_tb,Hmimo_tb),另一个是 corr(Hmimo_tb1,Hmimo_tb1)。

使用 xcorr 命令我在分析结果时遇到了很大的问题。首先,我发现只有一个值 1 和很多非常接近 0 的值……这对我来说很奇怪,因为我预计所有值都在 0.8 左右, 0.9 或 1....相反,我发现了很多像 0.001 或接近这个值的值,为什么?我如何解释这些值?从理论上我知道相关参数被定义为-1<=p<=1,但是图中差异很小的两个函数(我说的是1.5e-13)怎么可能不相关?

希望能得到快速的帮助,谢谢大家。

0 投票
1 回答
1904 浏览

matlab - corrcoef 和 xcorr 的区别

我有两个复杂的函数(大小 1x1x2501),我需要在这些函数之间建立相关性(互相关)。

我试过使用这个命令:

我的两个信号在哪里Hmimo_tbHmimo_tb1是哪里,唯一的区别是它们是在不同的位置测量的。这两个信号之间的差异最大等于 1.5e-13,因此它们仅受噪声影响。

我得到结果:

我要关联的函数很复杂,但 0.0000i 给我留下了一些疑问.... 另一个疑问是信号实际上并不相等,正如我之前所说的那样,有 1.5e 的差异-13 那次对角线上为什么不报呢?

corrcoef 和 xcorr 有什么区别?


是的,这是真的,我尝试过:

格式长 g

我得到了这样的结果:

第 1 列

第 2 栏

现在我该如何解释小的复杂值?它代表什么?谢谢