Octave禁用自动广播

时间:2016-03-06 13:09:07

标签: warnings octave

我有一些代码,Octave会把我吐出很多

warning: product: automatic broadcasting operation applied

我认为这种自动广播可能是我的代码中的问题,但是它还没有用,但是这条消息非常缺乏信息,它根本无法帮助我找到问题所在。我更喜欢Octave只是失败,在广播的特定位置出错,所以我可以手动去那里,理解为什么它在那里播放然后修复我的代码。另外,即使我的代码由于这个错误而无法正常工作,但由于其他一些错误,在任何其他编程语言中我也会去那里修复它,因为我不喜欢自动地依赖某些东西解释,但希望有干净的代码。

如何禁用这种恼人的行为(通常,无论何时何地,无处不在)并让Octave告诉我错误在哪里?

2 个答案:

答案 0 :(得分:4)

  

另外,即使我的代码由于这个错误而无法正常工作,但由于其他一些错误,在任何其他编程语言中我也会去那里修复它,因为我不喜欢依赖某些内容会自动地进行不同的解释,但希望拥有干净的代码。

自动广播警告已在Octave 3.6中添加,并已在Octave 4.0中删除。发出警告的原因是自动广播是3.6中的一个新功能,可能会让用户感到意外。

但是它意味着像普通操作员一样使用,而不是意外。使用它的事实是抛出一个警告,听起来好像需要修复代码。所以不喜欢它。

Octave版本的Octave默认情况下不会抛出该警告。您现在也可以禁用警告:

warning ("off", "Octave:broadcast");
  

如何禁用这种恼人的行为(通常,无论何时何地,无处不在)并让Octave告诉我错误在哪里?

您无法禁用自动广播,这会使Octave停止工作。例如,它将等同于禁用加法并期望Octave继续正常工作。

您似乎认为自动广播是您错误的根源。那不可能。自动广播不会导致不同的结果。如果您要禁用自动广播,则只会收到有关不一致尺寸的错误。

因此,假设您从未打算使用广播,那么您的程序无法正常工作,因为自动广播之前发生了一些其他错误(通常一个函数返回一个行向量而您期望一个列向量,反之亦然。)

但是,你显然使用的是旧版本的Octave,那时广播还没有被广泛使用。你可以让它抛出一个错误而不是一个警告,也许它仍然可以正常工作(特别是如果你不使用Octave包,因为他们使用自动广播超过Octave核心)。你可以这样做:

warning ("error", "Octave:broadcast");

答案 1 :(得分:0)

warning('error');

将所有警告设置为错误。 有关更多信息,请参阅documentation,似乎有一种方法可以将特定警告设置为错误,或者可能让它显示位置,从而导致警告。

请注意。所有命令仅为特定会话设置八度音程参数。有certain files可以写入这些命令,以便这些选项成为默认选项。

相关问题