0

下面是我尝试使用的 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

任何想法,将不胜感激。

4

1 回答 1

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 个次要版本。今年夏天某个时候计划发布另一个主要版本)。

于 2013-06-22T21:01:54.637 回答