Если у вас есть доступ к коду MATLAB, который создает фильм, вы можете поместить оси с IMAGE или IMSHOW в качестве фона и сделать оси поверх них прозрачными.
Вот простой пример:
im = image; % create image object (default pic)
imax = get(im,'parent'); % get image axes handle
axis ij
set(imax,'position',[0 0 1 1]) % make it to fill the whole figure
ax = axes; % new axes
h = plot(ax,rand(100),'ro'); % initial plot
for i=1:20
set(h,'ydata',rand(100,1)); % change the data in a loop
pause(0.1)
end
Вы можете получить лучший ответ, если покажете свой код, как вы создаете фильм.
EDIT
Я немного упростил код в вашем ответе. Например, вам не нужны циклы для заполнения трехмерного массива. И вам не нужно повторять поверхностную функцию в цикле. Просто измените свойство zdata.
Попробуйте этот код (замените yourimage.jpg реальным именем файла):
p = randn(128,128,200);
[u,v,w]=size(p);
frm_r=1:128;
frm_c=1:128;
figure;
im = imshow('yourimage.jpg'); % create and display image object from a file
imax = get(im,'parent'); % get image axes handle
set(imax,'position',[0 0 1 1]) % make it to fill the whole figure
ax = axes('color','none'); % new axes
hsurf = surface(frm_c,frm_r,p(:,:,1),'EdgeColor','none','Parent',ax);
colorbar;
xlim([1 u])
ylim([1 v])
j=1;
for t=1:w
set(hsurf,'zdata',p(:,:,t))
F(j) = getframe;
j=j+1;
end
movie(F,1,50)