matlab中的动画使用轴绘图 - 控制

时间:2014-10-30 16:50:57

标签: image matlab user-interface plot position

所以基本上我有一个GUI,我有一个轴图。

我希望我的图表有一个图像,当我点击计算按钮时,图像会上下移动。有人会指导我如何继续这个吗?使用位置命令?注意,该图对应于具有时间响应图的控制系统的移动。因此,随着系统变得稳定,图像移动将停止(特定位置)。到目前为止,我的图像甚至没有出现在轴上!任何帮助都会在matlab上受到高度赞赏!

for frame=1:1:length(t)
    if stop ~= 1
   axes(handles.axes5)
    cla;
    hold on;

    if y(frame)<=0


axes(handles.axes5,'position',[3,y(frame)+0.001,3,((y(frame)+1.0000000001))]);
imshow('ball.jpg','position',[3,0.001,3,(1.00000000001)]);


    else

axes(handles.axes5,'position',[3,y(frame)+0.001,3,((y(frame)+1.0000000001))]);
imshow('ball.jpg','position',[3,y(frame)+0.001,3,((y(frame)+1.0000000001))]);


    end

1 个答案:

答案 0 :(得分:0)

我怀疑由于进程繁忙,您的图片没有显示。

如果你有一个在过程中更新的gui,你需要告诉Matlab重绘。您可以通过包含命令

来完成此操作
drawnow

更新图像位置后放置。

编辑以移动轴为例进行更新。

d = figure;
ax = axes ( 'parent', d );
I = imread('pout.tif');
imshow ( I, 'parent', ax );

offset = 0.01;
for i=1:1000
  position = get ( ax, 'position' );
  position(1) = position(1) + offset;
  % if image off right hand side of page - change offset
  if position(1) + position(3) >=1
    offset = -offset;
    % if image off left hand side of page - change offset
  elseif position(1) <= 0
    offset = -offset;
  end
  set ( ax, 'position', position );
  drawnow()  
end

关于您的代码,有很多问题要严格解决它:

您需要考虑以下几点:

  1. 轴单位是&#34;通常&#34;标准化 - 也许你已经在代码中改变了它 - 它不清楚。
  2. 您应该在循环之前加载图像,而不是每次调用imshow时加载它。
  3. 建议您明确说明要对哪些轴执行操作(例如上面的父调用) - 您的将是handle.axes5
  4. 你不需要在循环中反映整个情节(cla,hold等等......),只需移动轴。