Matlab 中movie函數的使用


MATLAB中,創建電影動畫的過程分為以下四步:

step1:調用moviein函數對內存進行初始化(該步驟在Matlab5.3以上均可省略),創建一個足夠大的矩陣,使之能夠容納基於當前坐標軸大小的一系列指定的圖形(此處稱為幀)。

step2:調用getframe函數生成每個幀。該函數返回一個列矢量,利用這個矢量,就可以創建一個電影動畫矩陣。

getframe函數可以捕捉動畫幀,並保存到矩陣中。一般將該函數放到for循環中得到一系列的動畫幀。
該函數格式有:
(1)F=gefframe,從當前圖形框中得到動畫幀
(2)F=gefframe(h),從圖形句柄h中得到動畫幀
(3)F=getframe(h,rect),從圖形句柄h的指定區域rec中得到動畫幀

step3:調用movie函數按照指定的速度和次數運行該電影動畫。

當創建了一系列的動畫幀后,可以利用movie函數播放這些動畫幀。
該函數的主要格式有:
(1)movie(M),將矩陣M中的動畫幀播放一次
(2)movie(M,n),將矩陣M中的動畫幀播放n次
(3)movie(M,n,fps),將矩陣M中的動畫幀以每秒fps幀的速度播放n次

step4:調用movie2avi函數可以將矩陣中的一系列動畫幀轉換成視頻文件avi文件。這樣,即使脫離了matlab環境都可以播放動畫。

具體參見:

該方法的經典格式是:

%-----------------------------------------------

%錄制電影動畫
       for j=1:n
          %
          %這里輸入我們的繪圖命令
          %
          M(j) = getframe;
       end
       movie(M)
%舉個我曾經做過的凸輪機構 運動仿真的實例
%%以下僅為 運動movie部分代碼
%-----------------運動仿真開始------------------- 
figure(2) 
m=moviein(20); 
j=0; 
for i=1:360 
     j=j+1; 
     delta(i)=i*hd;%凸輪轉角 
     xy=[xp',yp'];%凸輪實際輪廓曲線坐標 
     A1=[cos(delta(i)),sin(delta(i)); %凸輪曲線坐標旋轉矩陣 
         -sin(delta(i)),cos(delta(i))]; 
     xy=xy*A1;%旋轉實際凸輪輪廓曲線坐標 
     clf; 
     %-----------------繪制凸輪------------------ 
     plot(xy(:,1),xy(:,2));%繪制凸輪 
     hold on;grid on;axis equal; 
     axis([(-180) (470) (-200) (240)]); 
     plot([-(r0+h-40) (r0+h) ],[0 0],'k','LineWidth',2);%繪制凸輪水平軸 
     plot([0 0],[-(r0+h) (r0+rr)],'k','LineWidth',2);%繪制凸輪垂直軸 
     plot(r0*cos(ct),r0*sin(ct),'g--','LineWidth',2);%繪制基圓 
     plot(e*cos(ct),e*sin(ct),'c-','LineWidth',2);%繪制偏距圓 
     plot(e+rr*cos(ct),s0+s(i)+rr*sin(ct),'k','LineWidth',2);%繪制滾子圓 
     plot([e e+rr*cos(-phi(i))],[s0+s(i) s0+s(i)+rr*sin(-phi(i))],'k','LineWidth',2); 
     %繪制滾子圓標線 
     plot([e e],[s0+s(i) s0+s(i)+40],'k','LineWidth',2);%繪制推桿 
     %------------------繪制推桿曲線----------------------------- 
     plot([1:360]+r0+h,s+s0);%繪制推桿曲線 
     plot([(r0+h) (r0+h+360)],[s0,s0],'k','LineWidth',2);%繪制推桿垂直軸 
     plot([(r0+h) (r0+h)],[s0 s0+h],'k','LineWidth',2);%繪制水平軸 
     plot(i+r0+h,s(i)+s0,'r.','LineWidth',1.5);%繪制推桿曲線坐標動點 
     title('偏置直動滾子推桿盤形凸輪設計'); 
     xlabel('x/mm'); 
     ylabel('y/mm'); 
     m(j)=getframe; 
end 
movie(m);

 

%單幀顯示方法
       f = getframe(gcf);
       colormap(f.colormap);
       image(f.cdata);

%------------------------------------------------

 

此外,利用immovie函數,我們可以從多幀圖像陣列中創建MATALB 電影動畫。[沒用過]

%隨意單張圖片代碼如下:

x=-8:0.5:8;

[XX,YY]=meshgrid(x);  

r=sqrt(XX.^2+YY.^2)+eps;

Z=sin(r)./r;

surf(Z);  %%生成了一幅靜態的surf圖片,XX,YY由meshgrid生成

theAxes=axis;

fmat=moviein(20);

for j=1:20;

 surf(sin(2*pi*j/20)*Z,Z)   %%取每一幀

 axis(theAxes)

 fmat(:,j)=getframe;

end

movie(fmat,10)  %動畫放10遍


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM