Octave:尽可能使MATLAB兼容

时间:2012-08-26 00:50:55

标签: matlab octave

我需要在MATLAB(家庭作业)中实现几个算法,但我想改用GNU Octave。但我想关闭所有octave扩展程序,并基本上将其转换为MATLAB的FOSS版本。我应该更改哪些设置?执行octave程序时,我应该提供哪些命令行选项?

PS:我知道--traditional命令行选项,虽然它似乎没有做太多。

PPS:欢迎任何建议。如果按照您的建议要求,例如,从源代码重建octave,请将其设为。

2 个答案:

答案 0 :(得分:7)

除了使用--traditional选项外,您无能为力。只是不要使用Octave提供的额外语法。毕竟,Matlab语法是GNU Octave语言的一个子集,由你自己决定只使用那个子集。

编辑:这不是你想要的答案,但有一个很好的理由说明为什么这是一项不可能完成的任务(不可能,我的意思是非常困难。唯一的选择是真的只是分叉Octave并改变它直到它是一个确切的克隆。你不想这样做,相信我)。想象一下以下的例子。 Octave有函数'rows'和'columns',但Matlab没有。如果您更改Octave以便这些功能不再存在,那么使用它们的所有其他Octave函数(我猜很多)也会停止工作。

其他人在您成功说服他们的教授接受Octave编写的作业之前,请确保您至少尝试编写兼容的代码。

编辑2:我会尝试通过将这种情况与钢琴进行比较来解释(似乎是一个非常好的比较)。您可以购买85或88键的钢琴。现在想象Matlab是一把85键的钢琴,而Octave是一把88键的钢琴(如果你想,也可以想象Matlab有3个踏板,而Octave只有2个踏板)。两支钢琴之间的唯一区别是,一支钢琴的音调范围略大,即它可以播放更多的音调(来自3个额外的键)。但是当你用一把85键的钢琴演奏C4时,用一把88键的钢琴演奏一把C4,声音是一样的,它们是相同的音符。注释是您可以使用的功能和关键字。他们是一样的。一支钢琴中的音符在另一支钢琴上是相同的音符。

现在,如果你是一位写作音乐的作曲家,你可能想要考虑到这一点。只是不要写任何需要这些额外键的音乐。两种钢琴的音乐都是相同的。如果你有一把88键的钢琴,你就不会砍掉3把额外的琴键,因为你希望它能与85键钢琴兼容。你根本就不玩那些钥匙。 88键的钢琴与85键的钢琴兼容,就像Octave与Matlab兼容一样。

如果你想要一本指南提醒你不能使用这些额外的钥匙,我猜你可以在它们上放一些繁文缛节以提醒你不要使用它们。类似地,使用带有文本编辑器的Octave,该编辑器对Octave和Matlab具有不同的语法高亮,因此当您使用不属于Matlab的语法时,它会突出显示不正确。除此之外,您无能为力(除非您计算要求Octave项目,请求Mathworks在Matlab中实现它们或自己实现它们。我不是说这是粗鲁的讽刺,只是试图详尽无遗)。

为了完成,是的,Octave还没有实现所有Matlab的东西,但随着人们开发它,它正在这样移动。它不是一个静态项目(例如,只需查看开发分支的NEWS文件),就可以根据需要开发它们的人来实现。并且一些函数的行为有所不同,但那些是你可以report的错误(甚至修复,因为它毕竟是免费和开源的)。这种不兼容性不是为了烦扰用户。他们在那里,因为没有人报告或修复它们。另外,大多数是针对错误或未记录的Matlab功能。

编辑3:您还可以打开matlab不兼容的警告(默认情况下处于关闭状态)。运行warning ('on', 'Octave:matlab-incompatible')。您可以将其保留在.octaverc文件中。要查看更多警告,请查看warning_ids

答案 1 :(得分:2)

我想最好使用一个为您完成此操作的GUI。我个人使用Xoctave 由于它的支持和Matlab之类的界面。