2016-08-23 103 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

添加了一个可能的修复方法以获取正值。 –