我对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
,我也想尽量避免。
感谢任何帮助。感谢。
答案 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 具有虚数。你必须要照顾好。