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

Using MATLAB to create Position, Velocity, and Acceleration plots

我对 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) 与角度 theta 的关系图。第一部分工作正常并为 x 吐出一个图。

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

感谢任何帮助。谢谢

您可以以另一种方式使用 diff,即,当您执行 diff(x) 时,它将 return 一个长度比原始长度小 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;

在这里,我假设了 hbd 的一些随机数。另外,beta 有虚数。你必须照顾好它。