我正在使用animationline制作一个凸轮轴的动画,该凸轮轴旋转和移动位于气门上的铲斗。 我创建了两个单独的图,一个是气门升程曲线的极坐标,另一个是基于Y轴上凸轮轴最小值的水平线。但是,我已经绘制了这两个图形,动画效果很好,除了有一条将凸轮凸角的最后一点连接到水平线的线之外,我正在尝试摆脱它。 下面的图片解释了我的意思;
我已经附加了凸轮提升曲线的.mat文件,下面是我的代码。我确定我缺少明显的东西,但是我可能离树林太近了,看不到树木。
Raw_Cam_Data文件通过以下链接中的保管箱附加(我认为这可以工作吗?)
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
谢谢
答案 0 :(得分:0)
在MATLAB论坛上对此线程找到了答案
我想念的部分是我将两个数据集都绘制在一张图上而没有“保持”,然后创建了两个单独的图/动画。
这很直观,但我愚蠢地错过了它。下面是一个适用示例的代码以及.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