Использование MATLAB для создания графиков положения, скорости и ускорения - PullRequest
0 голосов
/ 08 мая 2018

Я чрезвычайно новичок в 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) в зависимости от угла тета. Эта первая часть работает отлично и выкладывает сюжет для х.

Есть ли способ получить графики скорости и ускорения без того, чтобы мне приходилось вручную искать производную моей функции и составлять ее график? Я не уверен, каковы возможности MATLAB. Мне не нужны фактические производные, только график, поэтому, если я могу избежать ручной деривации, я бы хотел. Я посмотрел на diff, но выглядело так, как будто он требовал syms, чего я также хотел бы попытаться избежать.

Любая помощь приветствуется. Спасибо.

1 Ответ

0 голосов
/ 08 мая 2018

Вы можете использовать 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 имеет мнимые числа. Вы должны позаботиться об этом.

...