给定一组元素(以行向量Vi
表示),我使用[ki] = find(Vi==max(max(Vi)))
将最大值提取到另一个(行)向量(名为' ki')中。我说价值 s ,因为很多数字都在重复。我必须在所有重复值之间随机选择并知道所选择的列的列。为此我做了以下代码。
ri=rand(1)
for j=1:length(ki)
if ((j-1)/length(ki)<ri<=j/length(ki))
mi=ki(j)
endif;
endfor
if (ri==0)
mi=ki(1)
endif
问题是总是给了我mi=ki(last 'j' of the for cycle)
(在这种情况下是mi=ki(length(ki))
)。为什么呢?
答案 0 :(得分:0)
表达式((j-1)/length(ki)<ri<=j/length(ki))
并不能完成您的想法。 Matlab / Octave不支持&#34;链接&#34;的运作。您的逻辑测试应该是:
((j-1)/length(ki)) < ri && ri <= (j/length(ki))
相反,您正在做的事情是首先计算((j-1)/length(ki)) < ri
,这将为您提供0
或1
,然后您将检查0
{1}}或1
小于或等于(j/length(ki))