除了使用
--traditional
选项之外,您无法做任何事情。只需不使用Octave提供的额外语法即可。毕竟,Matlab语法是GNU Octave语言的子集,您可以选择仅使用该子集。
编辑:这不是您想要的答案,但有一个很好的理由,为什么这是一项不可能的任务(不可能是指非常困难。唯一的选择就是分叉Octave并进行更改,直到它成为完全克隆体。相信我,您不想这样做)。想象以下非常例子。Octave具有“行”和“列”函数,但Matlab没有。如果您更改Octave,使这些函数不再存在,则使用它们的所有其他Octave函数(我猜很多)也将停止工作。
其他人在您之前已成功说服他们的教授接受用Octave编写的作业,只需确保您至少尝试编写兼容的代码。
编辑2:我将尝试通过将此情况与钢琴进行比较来解释(似乎是一个非常好的比较)。您可以购买带有85或88个键的钢琴。现在想象一下,Matlab是带有85个键的钢琴,而Octave是带有88个键的钢琴(如果您愿意,还可以想象Matlab有3个踏板,而Octave只有2个踏板)。这两个钢琴之间唯一的区别在于一个具有稍微更大的音域,即它可以演奏更多的音符(来自3个额外键)。但是,当您在带有85个键和带有88个键的钢琴上演奏C4时,声音相同,它们是相同的音符。音符是可用的函数和关键字。它们是相同的。一个钢琴上的音符在另一个钢琴上是相同的。
现在,如果您是写音乐的作曲家,您可能需要考虑这一点。只需不写任何需要那些额外键的音乐片段。两种类型的钢琴播放的音乐将是相同的。如果您有带有88个键的钢琴,您将不会砍掉3个额外的键,因为您希望它与带有85个键的钢琴兼容。您只需不弹奏那些键即可。带有88个键的钢琴与带有85个键的钢琴兼容,就像Octave与Matlab兼容一样。
如果您想要一个提醒您不能使用那些额外键的指南,我猜您可以在它们上面贴上一些红色的胶带,以提醒自己不要使用它们。同样,使用具有Octave和Matlab不同语法高亮的文本编辑器使用Octave,因此当您使用不属于Matlab的语法时,它将突出显示不正确。除此之外,您无法做任何事情(除非您计算分叉Octave项目,请求Mathworks在Matlab中实现它们或自己实现它们。我不是指这种粗鲁的讽刺,只是试图全面)。
为完整起见,是的,Octave尚未实现所有Matlab的功能,但随着人们的开发,它正在朝着这个方向发展。它不是一个静态的项目(只需查看开发分支的
NEWS文件),随着需要它们的人员开发它们,事情得到了实现。有些功能确实会表现出不同的行为,但那些是你可以
报告的错误(甚至可以修复它们,因为毕竟它是免费和开源的)。这些不兼容性并不是为了让用户感到恼火而存在的。它们存在是因为没有人报告或修复它们。此外,它们中大多数是针对不正确或未记录的Matlab功能。
编辑3:您还可以打开Matlab不兼容警告(默认情况下关闭)。运行
warning ('on', 'Octave:matlab-incompatible')
。您可以将其留在您的
.octaverc
文件中。要查看更多警告,请查看
warning_ids
。
--lint
开关。这只是因为没有人真正需要它,还是因为难度大,或者因为某些政策的原因? - Alexander Putilinqp
函数,而MATLAB有quadprog
。虽然我不是这个领域的专家,但二次规划对我来说似乎是基本任务。所以,另一个问题是:为什么有不同名称的函数来执行类似的任务?还有,为什么没有兼容性层可以使移植脚本更容易? - Alexander Putilinquadprog
不在Matlab中,而是在优化工具箱中。如果您关心它,请报告一个错误并可能提交一个补丁,使其兼容。也许是因为之前没有人需要实现兼容版本。请记住,Octave只有其用户关心实现的功能。此外,有时Octave会在Matlab之前实现一些东西(例如结构体),然后需要“修复”以实现兼容性。对于Matlab,请使用文本编辑器。 - carandraugwarning ('on', 'Octave:matlab-incompatible')
。你可以将其添加到你的 octaverc 文件中。 - carandraug