影片包含未初始化的帧 matlab

下面的代码是有很多问题的,先不用管。但是就标题出现的问题,我找了一下发现是第60行,fmat1(:,i)=getframe;应该改为fmat1(:,k)=getframe; 因为我循环的变量是k。这里我是因为三个循环写的头晕了,把变量名搞错了。也就是说,标题这个错误信息中“未初始化”的意思是 帧结构体里面有空的元素,也就是有些帧是空白的,没有通过getframe赋值成功。打开帧结构体的变量框:
在这里插入图片描述
这些空白的都是未初始化的。

O=[0,0,0];      % 原点
%X,Y,Z三个坐标轴的方向向量:
L=10;           %坐标轴的长度
X0=[L,0,0];
Y0=[0,L,0];
Z0=[0,0,L];

X=[L,0,0];
Y=[0,L,0];
Z=[0,0,L];
%A,B,C的值计算出来用于后面标记text:
A=[X0(1)+O(1),X0(2)+O(2),X0(3)+O(3)];
B=[Y0(1)+O(1),Y0(2)+O(2),Y0(3)+O(3)];
C=[Z0(1)+O(1),Z0(2)+O(2),Z0(3)+O(3)];


%利用quiver3()作世界坐标系:
quiver3(O(1),O(2),O(3),X0(1),X0(2),X0(3),'b','LineWidth',2);
hold on 
quiver3(O(1),O(2),O(3),Y0(1),Y0(2),Y0(3),'b','filled','LineWidth',2);
quiver3(O(1),O(2),O(3),Z0(1),Z0(2),Z0(3),'b','filled','LineWidth',2);

%用文本标记X,Y,Z轴:
text(A(1)+0.2,A(2),A(3),'X','Color','red','FontSize',14);
text(B(1),B(2)+0.2,B(3),'Y','Color','green','FontSize',14);
text(C(1),C(2),C(3)+0.2,'Z','Color','[1 0.5 0]','FontSize',14);
%--------------------------------------------------------------------------
% axis([-4,4,-4,4,-4,4]); %设置坐标轴范围,根据需要调整显示效果
%设置坐标轴反向:
set(gca,'XDir','reverse');
set(gca,'YDir','reverse');
%设置grid的属性,待完善:
%------
axis equal %保证图像等刻度显示,图像不因刻度不同发生畸变。
xlabel("x轴");
ylabel("y轴");
zlabel("z轴");
%画与坐标轴平行的直虚线,颜色为灰色,作背景参考用:
plot3([-10,10],[0,0],[0,0],'--','Color',[0.5 0.5 0.5]);
hold on
grid on
plot3([0,0],[-10,10],[0,0],'--','Color',[0.5 0.5 0.5]);
plot3([0,0],[0,0],[-10,10],'--','Color',[0.5 0.5 0.5]);
%-------------添加动画------------------------------------------------------
loops = 135;
fmat1(loops)=struct('cdata',[],'colormap',[]);
theAxes=axis;
for k=1:45
            rz=rotz(k*pi/180);
            
            X_e=rz*X.';
            Y_e=rz*Y.';
            Z_e=rz*Z.';
            %利用quiver3()作世界坐标系:
            quiver3(O(1),O(2),O(3),X_e(1),X_e(2),X_e(3),'r','LineWidth',2);
            hold on 
            quiver3(O(1),O(2),O(3),Y_e(1),Y_e(2),Y_e(3),'r','LineWidth',2);
            quiver3(O(1),O(2),O(3),Z_e(1),Z_e(2),Z_e(3),'r','LineWidth',2);
            axis(theAxes);
            fmat1(:,i)=getframe;
            
end
        
for j=1:30
         ry=roty(j*pi/180);
         X_e2=rz*X_e;
         Y_e2=rz*Y_e;
         Z_e2=rz*Z_e;

         %利用quiver3()作世界坐标系:
         quiver3(O(1),O(2),O(3),X_e2(1),X_e2(2),X_e2(3),'r','LineWidth',2);
         hold on 
         quiver3(O(1),O(2),O(3),Y_e2(1),Y_e2(2),Y_e2(3),'r','LineWidth',2);
         quiver3(O(1),O(2),O(3),Z_e2(1),Z_e2(2),Z_e2(3),'r','LineWidth',2);
       
        axis(theAxes);
        
         fmat1(:,45+j)=getframe;
        
        
end
    
for i=1:60
    rx=rotx(i*pi/180);
    X_e3=rz*X_e2;
    Y_e3=rz*Y_e2;
    Z_e3=rz*Z_e2;

    %利用quiver3()作世界坐标系:
     quiver3(O(1),O(2),O(3),X_e3(1),X_e3(2),X_e3(3),'r','LineWidth',2);
     hold on 
     quiver3(O(1),O(2),O(3),Y_e3(1),Y_e3(2),Y_e3(3),'r','LineWidth',2);
     quiver3(O(1),O(2),O(3),Z_e3(1),Z_e3(2),Z_e3(3),'r','LineWidth',2);
 axis(theAxes);
     fmat1(:,i+75)=getframe;
    
    
end

movie(fmat1,1,10);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值