如何使 pdist 忽略一个值(Matlab)
Posted
技术标签:
【中文标题】如何使 pdist 忽略一个值(Matlab)【英文标题】:How to make pdist ignore a value (Matlab) 【发布时间】:2012-03-27 06:52:47 【问题描述】:我正在使用pdist
计算三维点之间的欧几里得距离(在 Matlab 中)。但是,我有一些坐标无法从矩阵中删除,但我希望 pdist
忽略。
我尝试用NaN
覆盖我想忽略的值,但pdist
仍然在计算中使用它们。有没有办法让 pdist 在它的过程中忽略一个值?
【问题讨论】:
【参考方案1】:我不知道pdist
,但您似乎需要删除某些行才能使其按您想要的方式工作。如果要查找不需要的行的索引,可以执行以下操作:
d = [1,2,3;2,3,4;3,4,5]
d =
1 2 3
2 3 4
4 5 6
i = [1 3]
d(i,:)
1 2 3
4 5 6
id = pdist(d(i,:)) % assume id=2
real_index = i(id) % now the real index is i(2)=3
现在您将拥有real_index
中的行索引。 (我的matlab中似乎不存在pdist,所以我无法获得真正的输出,但想法就在那里!)
【讨论】:
我知道,但删除行不是我想要的(这会改变索引,这是我最终需要的)。我需要一种方法让pdist
忽略值,而不必删除实际数据。
它不会改变变量本身——它只是将一个不带行的匿名变量传递给 pdist(即 pdist(d(i,:)) )。 d 将保持不变。
是的,但它会改变pdist
的输入(以及输出)。假设我有一个矩阵d
,第二行的距离最小。删除第一行后,pdist
将返回1
作为距离最小的行的索引(d
是错误的)。
哦,好的。我没有意识到 pdist 的输出依赖于此。使用 pdist 的输出作为 i 的索引来取回原始行怎么样?那行得通吗?我修改了答案以反映这一点。
这是个好主意,有点像使用find
你的意思吗?我试试看!以上是关于如何使 pdist 忽略一个值(Matlab)的主要内容,如果未能解决你的问题,请参考以下文章