2015-10-17 152 views
0
clear all 
close all 

mov=VideoWriter('mult.avi'); 

N=50; 
om=0.1; 
X = linspace(0,12.4,N); 
Y = 0*X; 
Z2= 0*X; 

for it=1:100 

Z = cos(X-it*om); 
Y2= cos(X-it*om); 

stem3(X,Y,Z,'r','fill') 
hold on 
stem3(X,Y2,Z2,'k','fill') 
hold on; 
line(X,Y,Z2); 

for ix=1:N 
    hold on; 
    plot([X(ix) X(ix)],[0 Y2(ix)],'k'); 
end; 

hold off 
view(-25,30); 

xlim([X(1) X(end)]); 
ylim([-1 1]) 
zlim([-1 1]) 

set(gcf,'Color',[1 1 1],'nextplot','replacechildren', 'Visible','off') 

axis off 

FF=getframe(gcf); 

mov=addframe(mov,FF); 
end; 


mov=close(mov); 

这是我的matlab代码。每次我打在命令窗口中运行,我看到这个错误未定义函数或变量'addframe'

Undefined function or variable 'addframe'. 

Error in EM (line 41) 
mov=addframe(mov,FF); 

此文件包含电磁波的两个组成部分:直角彼此的电场和磁场,它应该向前推进。但它始终保持不变,因为addframe错误。所以也许有人可以帮助我?

+0

你可以发布'addframe'函数的来源吗? – kvorobiev

+0

什么来源?这是所有我得到:( – TheDude

+0

功能'addframe'定义? – kvorobiev

回答

1

有一对夫妇在代码中的错误:

  • 如果你使用VideoWriter类,你必须真正打开电影文件(调用open方法),因为VideoWriter只有构建了一个VideoWriter object视频数据写入压缩的AVI文件
  • 也使用VideoWriter你要调用的方法writeVideo(而不是addframe(这是不是一个VideoWriter方法
  • 然后,在t结束他脚本(在电影的registraion结束),你必须关闭AVI文件与close方法

功能addframe可用于帧添加到使用功能avifile创建的avifile object;请注意,此功能将在未来版本中删除。

此后您可以找到更新的脚本。

clear all 
close all 

mov=VideoWriter('mult_1.avi'); 
% Added 
open(mov); 

N=50; 
om=0.1; 
X = linspace(0,12.4,N); 
Y = 0*X; 
Z2= 0*X; 

for it=1:100 

    Z = cos(X-it*om); 
    Y2= cos(X-it*om); 

    stem3(X,Y,Z,'r','fill') 
    hold on 
    stem3(X,Y2,Z2,'k','fill') 
    hold on; 
    line(X,Y,Z2); 

    for ix=1:N 
     hold on; 
     plot([X(ix) X(ix)],[0 Y2(ix)],'k'); 
    end; 

    hold off 
    view(-25,30); 

    xlim([X(1) X(end)]); 
    ylim([-1 1]) 
    zlim([-1 1]) 

    set(gcf,'Color',[1 1 1],'nextplot','replacechildren', 'Visible','off') 

    axis off 

    FF=getframe(gcf); 
    % With "VideoWriter" use "writevideo" to add frames to the video 
    writeVideo(mov,FF); 

end; 
% Close the video file 
close(mov); 

希望这会有所帮助。

+0

非常感谢,我可以再问一个问题吗? 如何让这个文件在我运行后打开而不是导出? – TheDude

+0

你是什么意思用_make打开这个文件,而不是在我按下run_之后导出?注意,我编辑了答案,并且添加了一些关于'addframe'的信息:函数addframe可用于将帧添加到使用该函数创建的avifile对象avifile;注意,这个函数将在未来的版本中被删除。 –

+0

哦好吧srr询问这样一个愚蠢的问题:) – TheDude