[已答复] 想得到3D式的动态旋转图

[复制链接]
honeyclover 发表于 2016-12-11 19:04:45
各位大神~~求指导哇~~

下面代码,是我需要画出的三维图。现在我想在原来的画图代码上增加一段代码,使得我的三维图,可以动态旋转,就像3D图那种一样,需要生成gif图片。虽然在运行程序时,图片有几秒钟的3D式旋转,但是却生成不了GIF动态图。这是因为我代码错误了?还是我MATLAB版本较低,IMwrite函数生成不了GIF呢?




程序总是报错:??? Error using ==> imwrite
No writing function for format gif.  See "help imformats".


画图代码如下:

x = 1:0.1:6;
y = 1:0.1:6;
n = length(x);
z = zeros(n,n);
for i = 1:n
    for j = 1:n
        s1 = ((6-x(i)));
        s2 = ((6-y(j)));
        w = ((4-abs(x(i)-2)));
        t = ((3-abs(y(j)-4)));
        if (x(i)-y(j)) > 0
            m = (abs(s1).^0.2);
        else
            m = (abs(s2).^0.2);
        end
        if w < 0
            w = -(abs(w).^0.4);
        else
            w = (abs(w).^0.4);
        end
        if t < 0
            t = -(abs(t).^0.4);
        else
            t = (abs(t).^0.4);
        end
        z(i,j) = m.*w.*t;
        if abs(x(i)-y(j)) < 1
            z(i,j) = NaN;
        end            
    end
end
mesh(x,y,z)

axis vis3d
shading interp
for i=1:36
    camorbit(10,0,'camera')
    M=getframe(gcf);
    im=frame2im(M);
    [imind,cm]=rgb2ind(im,256);
    if i==1
        imwrite(imind,cm,'out.gif','gif','LoopCount',inf,'DelayTime',0.1);%说明loopcount只是在i==1的时候才有用
    else
        imwrite(imind,cm,'out.gif','gif','WriteMode','append','DelayTime',0.1);%当i>=2的时候loopcount不起作用
    end
end
xlabel('x');
ylabel('y');
zlabel('z');
??? Error using ==> imwrite
No writing function for format gif.  See "help imformats".

2 条回复


Lesvas 发表于 2016-12-11 22:21:18
imwrite不行,doc imwrite看帮助

zcxnia 发表于 2021-5-25 10:04:29
我运行没有报错
您需要登录后才可以回帖 登录 | 注册

本版积分规则

相关帖子
热门教程
站长推荐
快速回复 返回顶部 返回列表