使用MATLAB创建位置,速度和加速度图

时间:2018-05-08 17:03:31

标签: matlab calculus

我对MATLAB非常陌生(就像今天刚刚提到的那样)并试图创建基本的位置,速度和加速度图。

到目前为止,我有这个:

theta = (0:1:pi);
beta = asin((h+ b*cos(theta))/d);
x = b*cos(theta) + d*cos(beta);

plot(radtodeg(theta), x*1000);

b,d和h是常数,我试图绘制位置(x),速度(x_dot)和加速度(x_dd)与角度θ的关系。第一部分工作正常,并为x发出一个情节。

有没有办法获得速度和加速度图,而不必手动找到我的函数的导数并绘制它?我不确定MATLAB的功能是什么。我不需要实际的衍生物,只需要绘图,所以如果我可以避免手工推导,我想。我调查了diff但看起来好像需要syms,我也想尽量避免。

感谢任何帮助。感谢。

1 个答案:

答案 0 :(得分:1)

你可以用另一种方式使用diff,即当你做diff(x)时,它将返回一个长度比原始长度小1的向量。以下是代码的修改版本:

h = 5; b = 2; d = 4;
theta = (0:0.1:pi);
beta = asin((h+ b*cos(theta))/d);

% Position 
x = b*cos(theta) + d*cos(beta);
plot(radtodeg(theta(1:end-2)), x(1:end-2));

% Velocity 
hold on;
v = diff(x);
plot(radtodeg(theta(1:end-2)), v(1:end-1));

% Acceleration
a = diff(v);
plot(radtodeg(theta(1:end-2)), a);

legend('Position', 'Velocity', 'Acceleration');
hold off;

在这里,我假设 h b d 的一些随机数。此外, beta 具有虚数。你必须要照顾好。