Matlab代码的连分式



我想使用连分式进行数字水印。我需要用连分式的概念计算一个数。谁能提供连分式的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))))

最新更新