2015-05-10 28 views
1

我正在使用glpk求解器來獲取xmin中最小化問題的LP變量值。 xmin是一個包含0,1和一些小數值的向量。那麼我想要得到它們中的小數值。在matlab中找到操作/ octave

frac_value = find (xmin > 0 & xmin < 1) 

frac_value_xmin = xmin(frac_value) 

frac_value應該給我從xmin分數值的位置。 frac_value_xmin應該給我的價值。

對於某些輸入xmin只包含01並且顯示沒有小數值。像xmin= 1 0 -0 1 0

但對於一些投入xmin還顯示,只有01值,但像下面

xmin = 1.00000 1.00000 0.00000 -0.00000

find手術後返回frac_value = 3frac_value_xmin = 2.4652e-32哪裏它假設不返回任何興。

對於一些輸入xmin = 1.0000 0.50000 0.00000 0.50000那麼它也顯示正確的輸出。爲frac_value = 2 4frac_value_xmin = 0.50000 0.50000

我試過frac_value = intersect(find(xmin>0), find(xmin<1))這也給了我同樣類型的問題。我不知道爲什麼會發生這種情況。任何幫助有關這將不勝感激。

+0

這不是一個正常的行爲,'find'應該只返回有限整數。你能用這種行爲產生一個最小的例子嗎? – Ratbert

回答

1

沒有必要使用find這一點,你可以簡單地直接做一些合理的索引:

frac_value_xmin = xmin(xmin>0 & xmin<1); 

最佳,

+0

但我也需要這些職位。這也給我那些有線值實際上值應該是'0.000000000000000' – Cherry