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

tkt*_*711 5 plot octave

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

printf('Plotting Data...\n');
x = -10:0.1:10;
plot(x, sin(x));
Run Code Online (Sandbox Code Playgroud)

但我收到错误消息:

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

你能告诉我如何解决吗?谢谢!

Z.G*_*rey 6

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

  1. 更改脚本名称
  2. 删除了以前的脚本(旧名称并包含相同的脚本)
  3. write八度提示文件名“没有m”(写“file”而不是“file.m”)

这是我的脚本并将其命名为“xx.m”

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

我写的八度提示xxrun xx两者都很好用。

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

  1. 你不应该在你的函数之后命名你的脚本。例如,当我的脚本命名为“ezplot.m”并且它包含“ezplot(f)”时,它不起作用。更改它的名称而不是脚本中的函数
  2. 如果有多个 m 文件以不同的名称包含相同的脚本,则会导致相同的错误。删除共享相同脚本的另一个文件。


jad*_*hem 5

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


不那么简短的回答

当试图调用一个函数时somefunction(),Octave 首先会somefunction.m 在你当前的目录中寻找一个文件。1 如果它找到一个,那么它将尝试somefunction使用该文件进行调用。如果它没有找到,那么它会在它的内置函数中寻找它(存储在你计算机上的其他地方)。

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

因此,解决方案是将文件名更改为plot.m.


1这假设当前作用域中没有名为 的变量somefunction。如果存在,则变量优先。