如何在Matlab中绘制这些变量?

时间:2014-11-26 11:45:58

标签: matlab matlab-figure

我想将我的变量绘制为teta=0:360度。但我无法解决矩阵问题。绘制所有变量,例如vcacbzegonbdot

teta=0:.1:2*pi;
w=2000*2*pi/60;l1=.05;l2=0.15;
beta=asin(l1/l2*sin(teta));
bdot=l1/l2*w*(cos(teta)./sin(beta));
xc=l1*cos.(teta)+l2*cos.(beta);
vc=-l1*w*sin.(teta)-l2*bdot.*sin.(beta);
bzegon=-l*w*(w*sin.(teta)*(xc-l1*cos.(teta))+cos.(teta)*(vc+l1*sin.(teta)))/((xc-l*cos. (teta))^2);
ac=-l1*w*cos.(teta)-l2*bzegon.*sin.(beta)-l2*bdot.*cos.(beta);
plot(teta,bdot);
set(gca,'XTick',0:pi/2:2*pi)
set(gca,'XTickLabel',{'0','pi/2','pi','3pi/2','2p'})
%title('bdot');
ylabel('bdot');
xlabel('radian');

2 个答案:

答案 0 :(得分:0)

取代:

xc=l1*cos.(teta)+l2*cos.(beta);
vc=-l1*w*sin.(teta)-l2*bdot.*sin.(beta);
bzegon=-l*w*(w*sin.(teta)*(xc-l1*cos.(teta))+cos.(teta)*(vc+l1*sin.(teta)))/((xc-l*cos. (teta))^2);
ac=-l1*w*cos.(teta)-l2*bzegon.*sin.(beta)-l2*bdot.*cos.(beta);

使用:

xc=l1*cos(teta)+l2*cos(beta);
vc=-l1*w.*sin(teta)-l2*bdot.*sin(beta);
bzegon=-l1*w.*(w.*sin(teta).*(xc-l1*cos(teta))+cos(teta).*(vc+l1*sin(teta)))/((xc-l1*cos(teta)).^2);
ac=-l1*w.*cos(teta)-l2*bzegon.*sin(beta)-l2*bdot.*cos(beta);

你必须再次检查所有参数,也许我搞砸了。

答案 1 :(得分:0)

使用.运算符的代码中存在很多错误。你无法做cos.(beta),逐个元素操作的.运算符需要在乘法,加,减,提升到幂等之前等等......这是一个更正的您的代码版本(我假设l的标量值未在您的问题中指定):

teta=0:.1:2*pi;
w=2000*2*pi/60;l1=.05;l2=0.15;
l=l1+l2; % or whatever value, I assumed l was a scalar
beta=asin(l1/l2*sin(teta));
bdot=l1/l2*w*(cos(teta)./sin(beta));
xc=l1*cos(teta)+l2*cos(beta);
vc=-l1*w*sin(teta)-l2*bdot.*sin(beta);
bzegon=-l*w.*(w.*sin(teta).*(xc-l1*cos(teta))+cos(teta).*(vc+l1*sin(teta)))/((xc-l*cos(teta)).^2);
ac=-l1*w.*cos(teta)-l2*bzegon.*sin(beta)-l2*bdot.*cos(beta);
plot(teta,bdot);
set(gca,'XTick',0:pi/2:2*pi)
set(gca,'XTickLabel',{'0','pi/2','pi','3pi/2','2p'})
%title('bdot');
ylabel('bdot');
xlabel('radian');