在matlab中试图同时绘制多个轨迹的时间

问题描述 投票:0回答:1

我正在尝试绘制多个振荡器动画的wrt。时间,以便“同时”对它们进行动画处理,以便并排跟随它们。我可以分别绘制每个点,但是我希望每个振荡器在动画中的各个点之间都有一条连接的线。

已经证明是困难的,我尝试使用“ addpoints(h,x,y,z)”(它适用于单个轨迹),但是每个连接在每个振荡步骤之后自然变得不相干,我有点茫然,因为尝试什么。

循环本身看起来像这样,t是时间,osc是振荡器编号,sin(y)是每个振荡器在给定时间的位置。

for t = 1:tlen
    for osc = 1:5
        plot3(t,osc,sin(y(osc,t)),'k.-')
        drawnow;
    end
end

这里'k'变成黑色'-'应该是一行,但被忽略并为'。'。使点

和'k-'同样被忽略。

matlab animation plot 3d
1个回答
0
投票

不确定我是否完全能解决您的问题,但这是解决方案吗?

figure(1);clf;
Num_Oscillators = 5;
plot_handles = cell(1,Num_Oscillators);
for iOscillator = 1:Num_Oscillators
    plot_handles{iOscillator} = plot3(inf,inf,inf,'k.-');hold on;
end
for t = 1:tlen
    for iOscillator = 1:Num_Oscillators
        set(plot_handles{iOscillator},'XData',1:t,'YData',iOscillator*ones(1,t),'ZData',sin(y(iOscillator,1:t)));
        drawnow;
    end
end

使用此简单的样机示例数据

tlen = 100;
y = @(osc,t) 2*pi/tlen*osc*t;

它生成此输出(使它们动态显示):

3D plot of oscillators

© www.soinside.com 2019 - 2024. All rights reserved.