我想在Octave中使用一个简单的代码(plot.m
)来绘制图形。我的代码如下:
printf('Plotting Data...\n');
x = -10:0.1:10;
plot(x, sin(x));
但我收到错误消息:
错误:在索引表达式错误中无效使用脚本ex1 / plot.m:从第3行第1列的绘图调用
你能告诉我怎么解决吗?谢谢!
答案 0 :(得分:4)
简答:更改脚本文件的名称。
简短回答
尝试调用函数somefunction()
时,Octave首先会在当前目录中查找文件somefunction.m
。 1
如果找到一个,则它将尝试使用此文件调用somefunction
。
如果找不到,那么它会在其内置函数中查找它(存储在计算机上的其他位置)。
在您的情况下,您尝试调用plot()
函数。
但是,您的脚本本身称为plot.m
。
所以Octave首先在当前目录中查找plot.m
并找到你的脚本!
它标识您的plot.m
文件是脚本而不是函数。
不能使用参数调用脚本(例如,在您的情况下为x
和sin(x)
),这就是您在索引表达式错误中无法使用脚本的原因"消息。
因此,解决方案是将文件名更改为plot.m
以外的其他名称。
1 这假设当前范围内没有名为somefunction
的变量。如果有,则变量优先。
答案 1 :(得分:4)
我遇到了同样的问题,要解决它
这是我的脚本并命名为" xx.m"
syms x;
f = x^3 - 6*x^2 + 11*x - 6;
ezplot(f)
xlabel("x")
ylabel("y")
title ("name")
grid on
我写的八度提示xx
或run xx
都很有效。
在我看来,"无效使用脚本" 问题的原因是