2016-08-23 82 views
-1

我想使用連續分數來進行數字水印。我需要使用連續分數的概念來評估一個數字。 任何人都可以提供持續分數的matlab代碼?連續分數的Matlab代碼

回答

3

可以使用rat功能:

>> rat(0.23) 

ans = 

0 + 1/(4 + 1/(3 + 1/(-8))) 

這個函數的輸出是一個字符串。如果你想解析這個輸出,你可以參考this topic

編輯:

如果你想在所產生的擴張只有正數,那麼你可以通過編輯rat.m(edit rat.m)實現這一目標。見this topic

基本上,您需要將rat.m的第100行從d = round(x)更改爲d = floor(x)。如果你不想改變Matlab的源代碼,你可以在某處保存一個新的rat.m的副本,甚至可以根據需要更改該函數的名稱。

與修改後的大鼠功能:

>> rat(0.23) 

ans = 

0 + 1/(4 + 1/(2 + 1/(1 + 1/(7)))) 
+0

佛山市南海新力:請注意,您可以用'eval'得到這個表達式的結果。不知道'老鼠'... +1 :) –

+0

但老鼠給我的負面價值,我不想。如何避免? – Sanik

+0

添加了一個可能的修復方法以獲取正值。 –