为什么我的if语句没有给我预期的结果?

时间:2016-09-03 17:28:13

标签: if-statement octave

给定一组元素(以行向量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)))。为什么呢?

1 个答案:

答案 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,这将为您提供01,然后您将检查0 {1}}或1小于或等于(j/length(ki))