我需要在MATLAB
(作业)中实现几个算法,但是我想GNU Octave
改用它。但我想关闭任何octave
扩展,基本上把它变成MATLAB
. 我应该更改哪些设置?执行程序时应该提供哪些命令行选项octave
?
PS:我知道--traditional
命令行选项,尽管它似乎没有多大作用。
PPS:欢迎提出任何建议。例如,如果遵循您的建议需要octave
从源代码进行重建,那就顺其自然吧。
除了使用该--traditional
选项之外,您无能为力。不要使用 Octave 提供的额外语法。毕竟,Matlab 语法是 GNU Octave 语言的一个子集,您只能使用该子集。
编辑:这不是您想要的答案,但有充分的理由说明这是一项不可能完成的任务(不可能,我的意思是非常困难。唯一的选择实际上就是分叉 Octave 并更改它,直到它是一个精确的克隆。你不不想这样做,相信我)。想象一下下面的例子。Octave 具有“行”和“列”功能,但 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 中实现它们或自己实现它们。我并不是说这是粗鲁的讽刺,只是想详尽无遗)。
For sake of completion, yes Octave has not implemented all Matlab things yet but it's moving that way as people develop it. It's not a static project (just take a look at the NEWS file for the development branch for example), things get implemented as the people who need them develop them. And some functions do behave differently but those are bugs you can report (and even fix since after all it's free and open source). Such incompatibilities are not there for the sake of annoying users. They are there because no one has reported or fixed them. Plus most of them are for incorrectly or undocumented Matlab features.
EDIT 3: you can also turn on the matlab incompatible warnings (which are off by default). Run warning ('on', 'Octave:matlab-incompatible')
. You can leave this on your .octaverc
file. To see more warnings look into warning_ids
.
I guess it is better to use a GUI that does it for you. I personally use Xoctave due to its support and Matlab like interface.