两幅图由不必要的线链接-动画线

时间:2019-01-20 17:24:56

标签: matlab animation plot

我正在使用animationline制作一个凸轮轴的动画,该凸轮轴旋转和移动位于气门上的铲斗。 我创建了两个单独的图,一个是气门升程曲线的极坐标,另一个是基于Y轴上凸轮轴最小值的水平线。但是,我已经绘制了这两个图形,动画效果很好,除了有一条将凸轮凸角的最后一点连接到水平线的线之外,我正在尝试摆脱它。 下面的图片解释了我的意思;

Example picture

我已经附加了凸轮提升曲线的.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 :(得分:0)

在MATLAB论坛上对此线程找到了答案

MATLAB Forum Post

我想念的部分是我将两个数据集都绘制在一张图上而没有“保持”,然后创建了两个单独的图/动画。

这很直观,但我愚蠢地错过了它。下面是一个适用示例的代码以及.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