'endif' 命令与 'endfor' 八度问题匹配

'endif' command matched by 'endfor' problem in octave

for i=1:128
  if (Analysis(4,i) != 0)
  Analysis (5,i) = Analysis (3,i) ./ Analysis (4,i);
  else if (Analysis(4,i) == 0)
    Analysis (5,i) = 10;
  endif
endfor

我是八度新手。我看到这种类型的错误“'endif' 命令与 'endfor' 匹配”。我不明白原因。

[N.B。 I checked this question too。这没有帮助。]

正如烧杯在评论中指出的那样,正确的语法是 elseif,而不是 else if。后者实际上意味着您的代码现在等同于此:

for i=1:128
    if (Analysis(4,i) != 0)
        Analysis (5,i) = Analysis (3,i) ./ Analysis (4,i);
    else
        if (Analysis(4,i) == 0)
            Analysis (5,i) = 10;
        endif
    endfor

换句话说,octave 让您知道它遇到了 endfor,它预计 endif 应该首先发生。