在向量中找到值" p"这对应于向量中的最大值" r = f(p)"

时间:2015-03-05 12:33:30

标签: matlab

就像标题一样简单。我有 nx1 大小的向量p。我对r = p/foo - floor(p/foo)的最大值感兴趣,foo是一个标量,所以我只是打电话:

max_value = max(p/foo-floor(p/foo))

如何获得p的哪个值max_value? 我想过要打电话:

[max_value, max_index] = max(p/foo-floor(p/foo))

但很快我意识到max_index很无用。我很抱歉在这里问这个真正的初学者。


将问题分解后,我意识到值p与我的相关向量p/foo-floor(p/foo)中的值之间没有唯一的相关性,因此存在逻辑问题而不是语言问题。

但是,根据我的输入数据,我知道该解决方案是唯一的。我怎样才能解决这个问题? 我最终做了:

result = p(p/foo-floor(p/foo) == max(p/foo-floor(p/foo)))

看起来很糟糕,所以如果你知道其他任何方式......

2 个答案:

答案 0 :(得分:1)

获得索引后,请使用它:

result = p(max_index)

答案 1 :(得分:0)

您可以创建一个新的向量,让您说出“已转换”的值:

p2 = (p/foo-floor(p/foo))

然后只需使用find查找p2上的最大值:

max_index = find(p2 == max(p2))

将使用该操作的最大值返回p2的索引或索引,最后只需在p

中查找原始值
p(max_index)

在1行中,这是:

p(find((p/foo-floor(p/foo) == max((p/foo-floor(p/foo))))))

这与你最后做的基本相同:)