MATLAB построение траектории - PullRequest
0 голосов
/ 10 мая 2019

Я бы хотел изобразить угловую скорость точки B, используя MATLAB.Однако в моем коде есть какая-то ошибка угловой скорости, которую я не смог исправить.

enter image description here

Длина входного звена OA механизма r = 50 мм, длина AB l = 150 мм.Фиксированные координаты точки C: xC = d = 80 мм и yC = 0 мм.Угловая скорость ОА составляет ω = 15 рад / с.

   %Full trajectory of B

%Linkage dimensions

clear
r = 50;
l = 150;
xC = 80;
yC = 0;
n = 361; % Number of position calculations
fii = linspace(0,2*pi,n);
omega = 15;
[xA,yA] = pol2cart(fii,r);
d = xA + xC;

alpha = atan(yA./(xC-xA));

lx = l*cos(alpha);
ly = l*sin(alpha);

xB = xA + lx;
yB = yA + ly;

plot(xB,yB) %Plots the trajectory

title('Full trajectory of AB')

% Angular velocity of AB 

for ind = 1:n
omegaAB(ind) = (-(r^2-d*r*cos(fii))/(r^2 + d^2 - 2*d*r*cos(fii)))*omega;
end

figure(2)
plot(fii,omegaAB, 'linewidth', 2, 'color', 'red')
title('Angular velocity of AB')
ylabel('\omega_{AB} [1/s]')
xlabel('\phi [rad]')

Ответы [ 2 ]

0 голосов
/ 14 мая 2019

Ваш код частично векторизован, но вы все еще зацикливаетесь на ind, поэтому вы получаете ошибки размеров матрицы. Вы можете либо удалить цикл и сделать его полностью векторизованным, либо убедиться, что все ваши векторы длиной n проиндексированы правильно:

for ind = 1:n
    omegaAB(ind) = (-(r^2-d*r*cos(fii(ind)))/(r^2 + d(ind)^2 - 2*d*r*cos(fii(ind))))*omega;
end

enter image description here

0 голосов
/ 10 мая 2019

Я думаю, что в вашем коде есть только одна ошибка при вычислении alpha:

alpha = atan(yA./(xC-xA));

Это дает следующую траекторию:

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...