matlab分段函数调用出错

函数是这样的:
function f=am(x)
if x>=0&x<0.01
f=280
elseif x>=0.01&x<=0.035
a=[0.01
0.015
0.02
0.025
0.03
0.032
0.035];
b=[280
279
278.5
277
272
268
260];
y=polyfit(a,b,5);
f=polyval(y,x);
elseif x>0.035
f=-180/0.035*x+440;
end
调用语句:
for k=1:m
xx(ii+1)=xx(ii+1)+am(a(k+1))*a(k+1)*cos(2*pi*k*ii/N)+am(b(k+1))*b(k+1)*sin(2*pi*k*ii/N);
end
其中的变量都是定义好的,运行时出现了这样的错误:
Error in ==> am at 2
if x>=0&x<0.01

??? Output argument "f" (and maybe others) not assigned during call to "D:\我的文档\MATLAB\am.m (am)".
这是为什么呢,急用,哪位大侠能给解惑,感激不尽!

第一段程序(分段函数),没有问题已通过测试,不过建议您再在末尾加一个and,将“&”替换成“&&”,不过不修改也能顺利运行,
至于后半段,我默认k=1,ii=2;N=10;调用命令为: xx=am(a(k+1))*a(k+1)*cos(2*pi*k*ii/N)+am(b(k+1))*b(k+1)*sin(2*pi*k*ii/N);
给出如下信息:
Warning: Polynomial is badly conditioned. Add points with distinct X
values, reduce the degree of the polynomial, or try centering
and scaling as described in HELP POLYFIT.
> In polyfit at 80
In am at 19
>> xx

xx =

-3.8062e+008

这说明这段程序本身没有问题,我给的数据之所以会发出警告,是因为我的ii和N给定不合理,使得用该拟合函数求得的结果不够精确。

建议楼主看看跳出的时候你的k等于几,看起是不是第一次调用分段函数就出错,如果第一次就出错,可能你的matlab除了问题,重启一下估计就行了。如果不是第一次,就是你这个程序本身的逻辑出错,出现了无意义的结果,建议检查求解范围。
温馨提示:答案为网友推荐,仅供参考
相似回答