我想使用连续分数进行数字水印。我需要使用连续分数的概念来评估数字。 任何人都可以提供连续分数的matlab代码吗?
答案 0 :(得分: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))))