【问题标题】:Matlab Parsing Error [duplicate]Matlab解析错误[重复]
【发布时间】:2013-06-22 20:47:29
【问题描述】:

下面是我尝试使用的 MATLAB 代码,但是我只有 OCTAVE 的副本(而且我知道有些函数不能转换为 Octave)。

我收到一个解析器错误,具体来说:

错误:

Parser error near line 4
Syntax error [~,ix] = sort(S1);

对于下面的代码...

function OUT = merge_two_solutions(S1,S2,w1,w2,vis)
if ~exist('w1','var'),w1=.5;w2=.5;end
ref = (1:length(S1));
[~,ix] = sort(S1);
S1n = S1; S1n(ix) = ref;
[~,ix] = sort(S2);
S2n = S2; S2n(ix) = ref;
OUT = w1*S1n+w2*S2n;
if exist('vis','var')
    clf;plot(S1n,S2n,'.b');
end

任何想法都将不胜感激。

【问题讨论】:

  • thisthisthisthis 和可能其他的重复。
  • 升级您的 Octave 版本。您必须使用其中一个 3.2.X,其中最后一个已超过 3 年。如果您使用的是 3.4.X(2 年多前发布)或更高版本中的任何一个,它都可以正常工作。

标签: matlab parsing variables octave


【解决方案1】:

您使用的是旧版本的 Octave,它不支持 ~ 进行返回值解除。对于该功能,您应该将您的 octave 版本至少升级到 3.4.0(2 年多前发布)。或者,您可以使用以下方法解决它:

% don't care for value of TMP
[ TMP, ix ] = sort(S1);
...
[ TMP, ix ] = sort(S2);

您必须使用 3.2.X 系列或更早版本的 Octave。请注意,自那时以来已经发布了 8 个版本(2 个主要版本和 6 个次要版本。计划在今年夏天的某个时候发布另一个主要版本)。

【讨论】:

  • 感谢您的快速响应。现在错误是 TMP 在第 2 行第 4 列附近未定义。
  • 你不应该在你的代码中使用TMP,除了[ TMP, ix ] ...中的那两次出现——删除TMP的其他出现。如果它解决了您的问题,请接受答案。
  • 对于非 Matlab 用户,一些 backgrounddocumentation 关于波浪号 (~) 运算符是什么。很惊讶它还没有进入 Octave(也许开发人员只是不喜欢新语法?)。
  • @horchler 这不是真的。从 2 年多前发布的 3.4.0 版本开始,Octave 就支持该语法。
  • @carandraug: ??所以这个问题的真正答案是用户需要升级他们的免费软件。我认为你应该把这个写下来作为答案。
猜你喜欢
  • 1970-01-01
  • 2015-11-05
  • 1970-01-01
  • 2019-01-25
  • 2013-08-21
  • 2015-02-22
  • 1970-01-01
  • 2021-10-16
  • 2012-03-19
相关资源
最近更新 更多