Matlab在同一图形中设置背景和线条的动画

Matlab在同一图形中设置背景和线条的动画,matlab,animation,matlab-figure,Matlab,Animation,Matlab Figure,我试图同时在动态背景上设置一条线的动画,问题是我无法在同一个绘图中同时更新这两条线。如果我设置背景动画,线条不会出现。 所以问题是为什么?我尝试过不同的职位,但没有成功 如果删除imagesc的一部分,则不会出现问题,并且线条的动画也会流动 for k = 1:numel(t) decay = rand; res = decay * background; imagesc(x,y,flip(res)); hold on clearpoints(h);

我试图同时在动态背景上设置一条线的动画,问题是我无法在同一个绘图中同时更新这两条线。如果我设置背景动画,线条不会出现。 所以问题是为什么?我尝试过不同的职位,但没有成功

如果删除
imagesc
的一部分,则不会出现问题,并且线条的动画也会流动

for k = 1:numel(t)
    decay = rand;
    res = decay * background;
    imagesc(x,y,flip(res));
    hold on
    clearpoints(h);
    clearpoints(p);

    addpoints(p,[l,(cosO(k)],[0,cosO(k)]);
    addpoints(h,[r,(senO(k)],[0,senO(k)]);

    drawnow
    hold off
end
修正!在循环中创建处理程序并修改CData:

imh = imagesc(x,y,flip(res));
for ...
    imh.CData = flip(res);

end

imagesc
的调用超出了绘图范围。您只需更改由
imagesc
表示的图像矩阵即可解决此问题(如
'CData'
属性):


在调用
imagesc
之前使用
hold-on
,或者在最后省略
hold-off
,或者对
i=1
使用
imh=imagesc(…)
,然后对
i>1
使用
imh.CData=flip(res)
。谢谢,hold-on/off策略不起作用,但是创建处理程序和修改CData确实起作用@用户2999345请将您的评论转换为答案,否则OP可能会这样做。
for k = 1:numel(t)
    decay = rand;
    res = decay * background;
    if k == 1
        imh = imagesc(x,y,flip(res));
    else
        imh.CData = flip(res);
        % or: set(imh, 'CData', flip(res) ); % in older MATLAB versions
    ...
end