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

Octave: invalid use of script in index expression

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

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

但我收到错误消息:

error: invalid use of script ex1/plot.m in index expression error: called from plot at line 3 column 1

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

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


少简答

当尝试调用函数 somefunction() 时,Octave 将首先在您的当前目录.[=37= 中查找文件 somefunction.m ]1 如果它找到一个,那么它将尝试使用该文件调用 somefunction。 如果找不到,那么它将在其内置函数(存储在您计算机上的其他地方)中寻找它。

在您的例子中,您尝试调用 plot() 函数。 但是,您的脚本本身称为 plot.m。 所以 Octave 首先在你的当前目录中寻找 plot.m... 然后找到你的脚本! 它表明您的 plot.m 文件是脚本而不是函数。 不能使用参数调用脚本(例如 xsin(x) 在你的情况下),这就是你收到 "invalid use of script in index expression error" 消息的原因。

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


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

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

  1. 更改了脚本名称
  2. 删除了以前的脚本(旧名称且包含相同的脚本)
  3. 写八度提示文件名"without 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

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

在我看来,"invalid use of script" 问题原因是

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