函数是这样的:function f=am(x)if x>=0&x<0.01f=280elseif x>=0.01&x<=0.035a=[0.010.0150.020.0250.030.0320.035];b=[280279278.5277272268260];y=polyfit(a,b,5);f=polyval(y,x);elseif x>0.035f=-180/0.035*x+440;end 调用语句:for k=1:mxx(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 2if x>=0&x<0.01??? Output argument "f" (and maybe others) not assigned during call to "D:\我的文档\MATLAB\am.m (am)".这是为什么呢,急用,哪位大侠能给解惑,感激不尽!
1 回答
忽然笑
TA贡献1806条经验 获得超5个赞
第一段程序(分段函数),没有问题已通过测试,不过建议您再在末尾加一个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除了问题,重启一下估计就行了。如果不是第一次,就是你这个程序本身的逻辑出错,出现了无意义的结果,建议检查求解范围。
- 1 回答
- 0 关注
- 115 浏览
添加回答
举报
0/150
提交
取消