为什么我收到错误“尝试执行脚本FILENAME作为一个函数”?

2,398次(过去30天)
Mathworks支金宝app持团队“class=
Mathworks支金宝app持团队 于2013年10月14日
编辑: 史蒂文勋爵 2021年1月4日19:04
我收到错误:
???试图以执行一个未命名的脚本作为函数。

接受的答案

Mathworks支金宝app持团队“class=
Mathworks支金宝app持团队 于2013年10月14日
编辑:Mathworks支金宝app持团队 2018年2月12日
此错误结果是因为有一个名为[filename]的matlab脚本,并且您的调用语法要求此脚本占用参数或返回值,它是函数的属性而不是脚本。例如,如果您有一个名为'banana.m'的脚本,则包含:
disp ('香蕉');
你用两个输入参数调用脚本,就像它是一个函数一样,在命令提示符下输入以下命令:
香蕉(1,1)
然后你就会得到误差。要调用脚本而不出错,请尝试不带参数调用脚本:
香蕉
其次,可能会发生错误,因为路径上同时存在一个脚本[filename]和一个函数[filename]。如果脚本出现在路径上的函数之前,则您的命令将尝试使用它而不是函数。在Mails 2006B(R2006B)和较新版本的MATLAB中,错误消息将显示调用脚本的位置。将此脚本重命名为更合适的名称。对于以前的产品版本,您可以使用命令:
哪个<文件名>
来确定MATLAB试图调用的[filename]的哪个实例。如果你想查看路径上的所有函数实例,输入命令:
哪个 --all
或者,在某些方案中可能会发生这种行为,其中文件名包含无效字符。特别是,如果文件名包含MATLAB运算符(如 - ,+或)的字符,则可能会看到此错误 * 。Matlab文件名必须以字母开头,然后可以跟随字母,数字和下划线的任何组合。

9日评论

显示 6年长的评论
zakria qadir“class=
zakria qadir 2020年8月13日
我收到这个错误:任何可以解决这个/ =的人?
尝试将脚本newplot作为函数执行:
D: \ MATLAB \ R2017a \ MATLAB工具箱\ \ \ newplot.m图形
轮廓中的错误(第66行)
cax = newplot (cax);
PSO_Simulation中的错误(第19行)
等高(x_new, y_new, z, 20);
>>
沃尔特罗伯森“class=
沃尔特罗伯森 2020年8月13日
我认为您可能不小心编辑了文件,并在“function”关键字之前添加了一些字符

登录评论。

更多答案(11)

盖“class=
2016年1月24日
也许是一个愚蠢的评论,但我花了1小时来寻找...
运行(filename.m)不起作用。如果你没有把文件名放到变量中,你应该使用run('filename.m')。这是一个非常基本的错误,但可能对某些人有用……

布鲁斯林“class=
布鲁斯林 2015年11月2日
正如我对上面的JMS的评论中所述,有一种不同的方式,您可以获得Mathworks受访者没有覆盖的这个错误。
如果您有一个名为abc.m的脚本 一个叫做ABC-copy的脚本。m,并尝试运行ABC-copy,它将失败,出现上面的错误“Attempt to execute SCRIPT FILENAME as a function”
MATLAB将减号解释为运算符,而不是文件名的一部分,以及您还有一个名为“ABC.M”的脚本意味着MATLAB尝试执行
“ABC。m - copy.m”
你可以通过临时删除ABC来证明这一点。m和运行'ABC-copy'。你会看到你得到一个文件没有找到错误,而不是MATLAB找不到ABC.m
有人会认为这可以通过执行“ABC-copy”来纠正。M ',即显式指定. M扩展名,但它并没有为我解决问题。
希望这能在将来帮助到别人。

3评论

史蒂文勋爵“class=
史蒂文勋爵 2015年11月2日
MATLAB中的功能名称必须:
  • start
  • 仅包含字母,数字和下划线字符
  • 不是关键字(请参阅ISKeyword的输出)
  • 长度不要超过NAMELENGTHMAX字符。
函数名“ABC-copy”违反了第二个限制。我可能会将这个函数重命名为“ABC_copy”。
Mohsin沙“class=
Mohsin沙 2017年12月11日
我面临着同样的错误,我通过遵循答案来解决它。太感谢了。

登录评论。


沃尔特罗伯森“class=
沃尔特罗伯森 2015年5月4日
此外:
作为一个实际问题,当基本的内置例程(如disp()被提到作为脚本)时,问题几乎总是由于以下几个原因中的任何一个而损坏安装,需要重新安装。
较小的可能性是安装可以正常,但用户已设法设置MATLAB路径以包含不应直接命名的库目录,例如如果文档目录已添加到MATLAB路径中。在这种情况下, restoredefaultpath 可以使用。

0评论

登录评论。


Hugo Pontes.“class=
Hugo Pontes. 于2020年5月14日
我只是回答,这样如果有人遇到和我一样的问题会更容易纠正。
如果将同一.m文件下载两次到Windows,它将自动命名为文件名(1).m。如果您尝试使用(1)MATLAB运行该文件将假设它是一个函数,并且错误会提示。它听起来很傻,但是只是改变文件名!

0评论

登录评论。



raed noor.“class=
raed noor. 2019年11月12日
编辑:raed noor. 2019年11月12日
如果我删除了那个文件,我就再也不能访问它了。

伊凡醉酒驾车Putra“class=
伊凡醉酒驾车Putra 2019年11月27日
我无法执行LQR函数
全部
% 初始条件
x0 = [3;%3弧度
0);% 0 rad / s
%系统动态
a = [0 1;
0.01 0];
B = [0;
1);
C = [1 0];
D = 0;
%控制法
q = [1 0;惩罚角误差
0 1];%惩罚角速率
R = 1;%惩罚推力器的努力
K =等(A, B, Q, R);
%闭环系统
sys = ss((a - b * k),b,c,d);
对初始条件运行响应
t = 0:0.005:30;
[y,t,x] = initial(sys, x0, t);

0评论

登录评论。


ismet虹膜“class=
ismet虹膜 2020年5月24日
comport ='com7';
如果存在(~(“serialFlag”、“var”))
[arduino.s,serialflag] = setupserial(comport);
结尾
如果(〜存在('h','var')||〜ishandle(h))
h =图(1);
结尾
如果存在(~(“text1”、“var”))
text1 = uicontrol(“风格”、“文本”、“字符串”,“X: 0度”,…
'pos',[450 100 100],'父母',h);
结尾
if(〜存在('text2','var'))
Text2 = UIControl('style','text','string','y:0 deach',...
'pos',[450 75 100 25],'parent',h);
结尾
如果(〜存在('按钮','var'))
按钮= UIControl('style','togglebutton','string','stop&close串口',...
'pos',[0 0 200 25],'父母',h);
结尾
权重= [0 20 50 70 100 120 150 170 200 220 250];
m = 0(长度(权重),1);
For I = 2:length(weights)
mbox =对话框([‘地方’num2str(重量(i))' grams on thr FSR']);uiwait (mbox);
m (i) = readFSR (fsr);
而(m(i)
m(i)= readfsr(fsr);
结尾
结尾
p1 = polyfit(m,重量,2);
Myaxes =轴('xlim',[ - 20 20],'ylim',[-20 20],'zlim',[ - 0 250]);
查看(3);
网格;
轴相等;
抓住;
[xsphere, ysphere,封闭]=球();
h(1) =表面(xsphere, ysphere封闭);
componentObject = hgtransform('父',myaxes);
集(h,‘父’,combineobject)
粗暴;
while(get(按钮,'值')== 0)
(电压)= readFSR (fsr);
质量=多尔(P1,电压);
如果(质量> 0)
力=质量* 9.81;
集(text1,“字符串”,['质量:“num2str(圆(质量))“克”)
集(text2,“字符串”,['力:“num2str(圆(力))' N '])
翻译= makehgtform('translate',[0 0质量]);
集(combinedobject,“矩阵”,翻译);
比例= makehgtform(“规模”,质量/ 10);
集(combinedobject、“矩阵”、缩放);
集(combinedobject, natrix,翻译*比例);
结尾
暂停(0.1);
结尾
关闭;
为什么是thİs错误?
尝试以函数的形式执行SCRIPT fsr:
C:\Users\ismet\Desktop\fsr.m
fsr错误(第28行)
m (i) = readFSR (fsr);

1条评论

沃尔特罗伯森“class=
沃尔特罗伯森 于2020年6月13日
这与http://www.matlabarduino.org/force.html有关
原始代码将设置串口的结果分配给一个名为fsr的变量。但是你的代码分配给arduino。S,但仍然期望FSR变量被赋值。

登录评论。


anish gunjal.“class=
anish gunjal. 2020年7月4日

在我的情况下,我收到错误“尝试将脚本文件名作为函数执行”?因为文件夹中的一个文件名是我正在执行的函数具有相同的名称。我只是重命名文件名并且错误解决了错误。

0评论

登录评论。


ahsan meo“class=
ahsan meo 2020年11月22日
CLC.
关闭所有
清除所有
x = (1 2 3);
y = (4 5 6);
c = polyfit (x, y, 2)
这个错误将会出现
尝试将脚本Polyfit作为函数执行:
D:\ nc代码\ polyfit.m
vander错误(第6行)
c = polyfit (x, y, 2)
>>

1条评论

史蒂文勋爵“class=
史蒂文勋爵 2020年11月22日
你已经编写了自己的polyfit。脚本文件,它优先于 Polyfit. 函数包含在MATLAB中。将脚本重命名为尚未在Matlab函数的名称(mypolyfit.mm是非常安全的选择。)

登录评论。


ahsan meo“class=
ahsan meo 2020年11月25日
CLC.
关闭所有
清除所有
x = [ - 2,-1,2];
A = vander([-2, -1, 2]);
Y = [-2 1 -1]';
c = a \ y
来这些错误
尝试以函数的形式执行SCRIPT vander:
D:\ nc代码\ vander.m
在Untitled111错误(第5行)
A = vander([-2, -1, 2]);

4评论

显示 1年长的评论
阿里斯卡尔“class=
阿里斯卡尔 于11月4日11:24
请帮助
功能dx = backstepping(t,x)
z = x2 -(往上平移(x1));
x1dot = z-c1 (x1);
zdot = u + c1 (z-c1 (x1));
x2 = z-c1(x1);
x1 = 1;
C1 = 1;
v(x1,z)= x1 ^ 2/2 + z ^ 2/2;
VDOT(X1,Z)= - C1(X1 ^ 2)-Z ^ 2;
u = ((c1 ^ 2) * (x1) x1, x2 + (c1) * (x1) * (c + 1));
dx = x1dot + zdot;
(t, x) =数值(@backstepping [1, 10], 2);
情节(t, x)
网格
backstepping_s
尝试以函数执行脚本BackStepping:
/ MATLAB / backstepping.m开车
odearguments中的错误(第90行)
f0 =函数宏指令(颂歌,t0, y0, args {:});% ODE15I设置参数{1}为yp0。
ode45错误(第115行)
odearguments(fcnhandlesused,solver_name,ode,tspan,y0,选项,varargin);
backsteppping_s错误(第1行)
(t, x) =数值(@backstepping [1, 10], 2);
史蒂文勋爵“class=
史蒂文勋爵 2021年1月4日19:03
除了沃尔特的修正,不要试图打电话 数值 使用@backstepping作为它在backstepping中的第一个输入。米本身。

登录评论。

下载188bet金宝搏

社区寻宝

找到Matlab Central中的宝藏,并发现社区如何帮助您!

开始狩猎!