два сюжета связаны нежелательной линией - анимированная линия - PullRequest
0 голосов
/ 20 января 2019

Я использую анимированную линию для создания анимации распредвала, вращающего и перемещающего ведро, которое сидит на клапане. Я создал два отдельных графика: полярные координаты профиля подъема клапана и горизонтальную линию, основанную на минимальном значении распределительного вала в направлении Y. Тем не менее, я составил эти два, и анимация работает хорошо, если не считать линии, которая соединяет последнюю точку кулачка с горизонтальной линией, и я пытаюсь избавиться от нее. Ниже картина, объясняющая, что я имею в виду;

Пример изображения

Я прикрепил файл .mat к профилю подъема кулачка, и мой код приведен ниже. Я уверен, что упускаю что-то очевидное, но я мог бы быть слишком близко к лесу, чтобы увидеть деревья.

Файл Raw_Cam_Data прикреплен в выпадающем списке по ссылке ниже (думаю, это будет работать?)

Raw_Cam_Data.mat

clear
clc
load('Raw_Cam_Data')
theta = deg2rad(1:1:360)
phi = theta'
R = Lift' + 17.6
%==============================
h = animatedline;
axis([-30 30 -30 30])
rotation = (-pi:pi/180:pi - (pi/180))'
output = zeros(360,1)
for II = 1:1:length(phi)-1

    x = R .* sin(theta + rotation(II))
    y = R .* cos(theta + rotation(II))

    [bucket, indice] = (min(y))
    output(II) = indice
    x_bucket = linspace(-25,25,359)
    y_bucket = bucket * ones(359,1)

    addpoints(h, x, y)
    addpoints(h, x_bucket, y_bucket)
    drawnow
    clearpoints(h)

end

Спасибо

1 Ответ

0 голосов
/ 21 января 2019

Нашли ответ на эту тему на форуме MATLAB

Сообщение на форуме MATLAB

Часть, которую я пропустил, была в том, что я строил оба набора данных на одном графике без 'держись 'и затем создавая два отдельных графика / анимации.

Это интуитивно понятно, но я тупо пропустил это.Код для рабочего примера приведен ниже вместе с .mat файлом

Raw_Cam_Data.mat

clear
clc
load('Raw_Cam_Data')

theta = deg2rad(1:1:360)
phi = theta'
R = Lift' + 17.6
%==============================

figure      % create new figure
hold on     % hold on to plot all data on the same figure
h = animatedline;   %animation 1, AKA first plot
h2 = animatedline   %animation 2, AKA second plot

axis([-30 30 -30 30])
rotation = (-pi:pi/180:pi - (pi/180))'
output = zeros(360,1)
for II = 1:1:length(phi)-1

    x = R .* sin(theta + rotation(II))
    y = R .* cos(theta + rotation(II))

    [bucket, indice] = (min(y))
    output(II) = indice
    x_bucket = linspace(-25,25,360)
    y_bucket = bucket * ones(360,1)

    addpoints(h, x, y)      %add points from first plot/ animation
    addpoints(h2, x_bucket, y_bucket)   %add points from second plot/ animation
    drawnow
    clearpoints(h)          % clear points from first plot
    clearpoints(h2)         % clear points from second plot

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