其中的变量都是定义好的,运行时出现了这样的错误:

函数是这样的:
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)".
这是为什么呢,急用,哪位大侠能给解惑,感激不尽!

富国沪深
浏览 120回答 1
1回答

忽然笑

第一段程序(分段函数),没有问题已通过测试,不过建议您再在末尾加一个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 Xvalues, reduce the degree of the polynomial, or try centeringand scaling as described in HELP POLYFIT.&nbsp;> In polyfit at 80In am at 19>> xxxx =-3.8062e+008这说明这段程序本身没有问题,我给的数据之所以会发出警告,是因为我的ii和N给定不合理,使得用该拟合函数求得的结果不够精确。建议楼主看看跳出的时候你的k等于几,看起是不是第一次调用分段函数就出错,如果第一次就出错,可能你的matlab除了问题,重启一下估计就行了。如果不是第一次,就是你这个程序本身的逻辑出错,出现了无意义的结果,建议检查求解范围。
打开App,查看更多内容
随时随地看视频慕课网APP