Octave:在索引表达式中无效使用脚本

时间:2016-12-20 03:35:27

标签: plot octave

我想在Octave中使用一个简单的代码(plot.m)来绘制图形。我的代码如下:

printf('Plotting Data...\n');
x = -10:0.1:10;
plot(x, sin(x));

但我收到错误消息:

  

错误:在索引表达式错误中无效使用脚本ex1 / plot.m:从第3行第1列的绘图调用

你能告诉我怎么解决吗?谢谢!

2 个答案:

答案 0 :(得分:4)

简答:更改脚本文件的名称。

简短回答

尝试调用函数somefunction()时,Octave首先会在当前目录中查找文件somefunction.m 1 如果找到一个,则它将尝试使用此文件调用somefunction。 如果找不到,那么它会在其内置函数中查找它(存储在计算机上的其他位置)。

在您的情况下,您尝试调用plot()函数。 但是,您的脚本本身称为plot.m。 所以Octave首先在当前目录中查找plot.m并找到你的脚本! 它标识您的plot.m文件是脚本而不是函数。 不能使用参数调用脚本(例如,在您的情况下为xsin(x)),这就是您在索引表达式错误中无法使用脚本的原因"消息。

因此,解决方案是将文件名更改为plot.m以外的其他名称。

1 这假设当前范围内没有名为somefunction的变量。如果有,则变量优先。

答案 1 :(得分:4)

我遇到了同样的问题,要解决它

  1. 更改了脚本名称
  2. 删除了以前的脚本(旧名称并包含相同的脚本)
  3. 写octave提示文件名"没有m" (写"文件"而不是" file.m")
  4. 这是我的脚本并命名为" xx.m"

    syms x;
    f = x^3 - 6*x^2 + 11*x - 6; 
    ezplot(f)
    xlabel("x") 
    ylabel("y") 
    title ("name")
    grid on
    

    我写的八度提示xxrun xx都很有效。

    在我看来,"无效使用脚本" 问题的原因是

    1. 您不应在功能后命名脚本。对于exm。,当我的脚本命名为" ezplot.m"它包括" ezplot(f)"这是行不通的。在脚本中更改名称以外的功能
    2. 如果有多个m文件包含不同名称的相同脚本,则会导致相同的错误。删除共享相同脚本的其他文件。