我想使用连分式进行数字水印。我需要用连分式的概念计算一个数。谁能提供连分式的matlab代码?
您可以使用rat
函数:
>> rat(0.23)
ans =
0 + 1/(4 + 1/(3 + 1/(-8)))
这个函数的输出是一个字符串。如果你想解析这个输出,你可以参考这个主题。
编辑:如果您希望在结果展开中只有正数,那么您可以通过编辑rat来实现这一点。m (edit rat.m
)
基本上,您需要更改第100行。m从d = round(x)
到d = floor(x)
。如果不想更改Matlab源代码,可以保存新源代码的副本。如果你愿意,你甚至可以修改函数的名字。
修改后的大鼠功能:
>> rat(0.23)
ans =
0 + 1/(4 + 1/(2 + 1/(1 + 1/(7))))