如何正确地在matlab里创建自定义函数,求高手指教~

先创建了函数文件Heaviside.m,是这样的
function f=Heaviside(t)
f=(t>=0);
plot(t,f)
axis([-1,3,-0.2,1.2])
,然后建立主程序hsys.m,是这样的:
syms t
f=sym('(1+t/2)*(Heaviside(t+2)-Heaviside(t-2)')
subplot(2,3,1),ezplot(f,[-3,3])
y1=subs(f,t,t+2)
subplot(2,3,2),ezplot(y1,[-5,1])
y2=subs(f,t,-t)
subplot(2,3,4),ezplot(y2,[-3,3])
y3=subs(f,t,2*t)
subplot(2,3,5),ezplot(y3,[-2,2])
y4=-f
subplot(2,3,6),ezplot(y4,[-3,3])
运行主程序之后报错了,
??? Error using ==> sym.sym>char2symNot a valid symbolic expression.
Error in ==> sym.sym at 92 S = char2sym(x);
Error in ==> hsys at 2f=sym('(1+t/2)*(Heaviside(t+2)-Heaviside(t-2)')
>> function[f,k]=sconv(f1,f2,k1,k2,
不知道是什么意思,请高手看下吧...快崩溃了T_T

f=sym('(1+t/2)*(Heaviside(t+2)-Heaviside(t-2)')
少了个括号,应该是发f=(1+t/2)*(Heaviside(t+2)-Heaviside(t-2));

解决办法
clc;
Heaviside=@(t) t>=0;
syms t
f=sym('(1+t/2)*(Heaviside(t+2)-Heaviside(t-2))')
subplot(2,3,1),ezplot(f,[-3,3])
y1=subs(f,t,t+2)
subplot(2,3,2),ezplot(y1,[-5,1])
y2=subs(f,t,-t)
subplot(2,3,4),ezplot(y2,[-3,3])
y3=subs(f,t,2*t)
subplot(2,3,5),ezplot(y3,[-2,2])
y4=-f
subplot(2,3,6),ezplot(y4,[-3,3])
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-09-25
“Fordre ”正解啊!
牛,一下就看出问题的关键来了!!!
建议楼主采纳啊!!!
第2个回答  2012-09-25
额,你的第二行最后少了半个括号,改成这样吧:
f=sym('(1+t/2)*(Heaviside(t+2)-Heaviside(t-2))')