gpt4 book ai didi

matlab - matlab中两个矩阵之间的相关性

转载 作者:太空宇宙 更新时间:2023-11-03 19:44:00 25 4
gpt4 key购买 nike

enter image description here

你好,

  1. 我想在上面显示的两个数据集之间创建一个相关矩阵,它将忽略任何出现的零(在上图中,绿色),任何人都知道什么是最有效的方法结果顺利吗?

  2. 有没有什么关联方法可以逐点识别相似性,从而得到的结果具有原始矩阵的“形状”?

谢谢你

注意:我没有matlab统计工具箱

最佳答案

2. Is there any correlation method that can identify the similarity point by 
point and by thus the results will have the "shape" of the original matrix?

让我们从你的第二点开始,因为它更清楚,你想要什么。您想要逐点比较两个图像,例如 AB。这归结为测量两个标量 ab 的相似性。假设这些标量来自区间 [0, Q],其中 Q 取决于您的图像格式(Q == 1Q == 255 在 Matlab 中很常见。

现在,最简单的距离度量是差值 d = |a - b|。您可能希望将其标准化为 [0, 1] 并反转值以测量相似性而不是距离。在 Matlab 中:

S = 1 - abs(A - B) / Q;

您提到忽略图像中的零。那么,您需要定义您期望零的相似性度量。一种可能性是将相似度设置为零,只要一个像素为零:

S(A == 0 | B == 0) = 0;

您也可以说那里的相似度未定义,并将相似度设置为 NaN:

S(A == 0 | B == 0) = nan;

当然,你也可以说 10 和 11 之间的不匹配与 100 和 110 之间的不匹配一样糟糕。在这种情况下,你可以根据总和 a + b(称为 Bray Curtis 归一化或归一化欧几里德度量)

D = abs(A - B) ./ (A + B)
S = 1 - D / max(D(:));

如果两个矩阵在同一位置都有一个零值像素,就会遇到问题。同样,有几种可能性:您可以用一个小的正值 alpha(例如 alpha = 1e-6)来增加总和,这样可以防止被零除: D = abs(A - B) ./(alpha + A + B).

另一种选择是忽略 D 中的无限值并在此处添加“零处理”,即

D = abs(A - B) ./ (A + B)
D(A == 0 | B == 0) = nan;
S = 1 - D / max(D(:));

你看,有很多可能性。

1. I would like to create a correlation matrix [...]

您绝对应该更多地考虑这一点,并对要计算的内容提出更好的描述。如果您的矩阵大小为 m x m,则您有 m^2 变量。由此您可以计算相关矩阵 m^2 x m^2,它测量每个像素与其他所有像素的相关性。该矩阵也将在对角线上具有最大值(这些是方差)。但是,如果您只有两个实现,我不建议计算相关矩阵。

另一种选择是测量两幅图像中行或列的相似性。然后,您将得到一个包含相关系数的向量 1 x m

但是,我不知道如何根据大小为 m x m 的两个输入计算大小为 m x m 的相关矩阵,它在对角线上具有最大值。

关于matlab - matlab中两个矩阵之间的相关性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12256865/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com