急急!!matlab 问题,求好心人帮忙,谢谢~~~

我的程序是这样的
s=0+eps:0.01:1000; %s从0变到1000
y=vectorize('(-.115*((cos(.943e-2*s^(1/2))-11.6*s^(1/2)*sin(.943e-2*s^(1/2)))*cos(1.36*s^(1/2))+40.4*(-.892e-4*sin(.943e-2*s^(1/2))/s^(1/2)-.104e-2*cos(.943e-2*s^(1/2)))*s^(1/2)*sin(1.36*s^(1/2)))*cos(.379e-1*s^(1/2))-.115*(261.*(-.323e-1*cos(.943e-2*s^(1/2))+.374*s^(1/2)*sin(.943e-2*s^(1/2)))*sin(1.36*s^(1/2))/s^(1/2)+6.45*(-.469e-2*sin(.943e-2*s^(1/2))/s^(1/2)-.546e-1*cos(.943e-2*s^(1/2)))*cos(1.36*s^(1/2)))*s^(1/2)*sin(.379e-1*s^(1/2)))*cos(.121*s^(1/2))') %将所有乘号和除号改成点乘和点除
plot(s,y);
grid on
可是却出错
??? Error using ==> plot
Error in color/linetype argument

Error in ==> gaidiancheng at 3
plot(s,y); 说我什么画的什么有错,不怎么懂,若是不自己手改成点乘和点除的话好像不会出现这个错误,请高手指教,非常的感谢~~~~~~

你的y在vectorize后会变成一个符号变量,故plot报错,而不用vectorize,y就是直接计算后面表达式的数值,因此不会出现这个问题。
在plot(s,y);前加上y=eval(y);将y计算成数值再画图就行了。eval(y),相当于将所有乘号和除号改成点乘和点除后的表达式输入到matlab命令窗口中,再执行一遍追问

谢谢哦,我还想问一个问题,就是其实我的这个y是通过一个式子算出来的,本来我想直接在那个程序中 输入y1=vectorize('y') 就是把y中所有乘号和除号改成点乘和点除 但是结果就是出来 y 而不是那个式子,不知道我有没有表达清楚~~~~谢谢~~

追答

例:
>> y = 'x^2' %假设y的表达式是x^2
y =
x^2
>> y1 = vectorize(y) %将y代表的函数(y=x^2)点乘化
y1 =
x.^2
>>y1 = vectorize('y') %将'y'点乘化,此时'y' 代表一个函数,它的表达式为y = y
y1 =
y
%你想问的是这个吗

追问

嗯嗯,是呢,就是说不要打引号就出来了是吧~~~~·谢谢~~

温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-03-19
笨蛋 那个问题啊

这里有教程http://v.youku.com/v_playlist/f5215139o1p0.html
第2个回答  2011-03-19
具体是什么啊?