回复 ( 2 )

  1. 小小睿
    理由
    举报 取消

    R里面有可以画3D图的package,下来之后按照help里面的照做就可以了。。

  2. 姜子的牙
    理由
    举报 取消

    首先声明,我并不知道这里的『时空三维图』的原始数据是用什么模型得到的,到底反映了什么。在我的理解中,模型就是v=f(x,y,z),而普通三维就是z=f(x,y). 所以,我按照题图的样式做了个比较难看的图。还有本人并非数学专业,有些地方讲的不对或者啰嗦,欢迎指出。

    我想应该可以利用MATLAB®的 Volume Visualization函数模型v=f(x,y,z)可以认为是在三维空间中各点处有定义,即充满整个三维空间。因此,要观察它的值,是不是按照特定的时空轨迹去采样就好了?所以,我想到了切片。就好像一个苹果的腐烂状态,可以描述成时空三维模型。在某个时间点,拿刀切下去,看看断面的腐烂程度便知该不该吃了(很多苹果是从♥开始就坏的)。这就是切片了,一种观测方式。所以,切片的制作也是很重要的,简单的形式就是一个或若干平行于坐标平面的平面,可以参考上面给的函数说明链接。下面放代码:

    clear, clc
    [x,y,z] = meshgrid(-4:.2:4, -4:.25:4, -4:.16:4);
    v = x.*exp(-x.^2-y.^2-z.^2);                     % The user-defined model
    
    % Produce two slice models
    figure(1)
    hsp1 = surf(x(:,:,1), y(:,:,1), sin(x(:,:,1)));  
    figure(2)
    hsp2 = surf(linspace(-4,4,50),linspace(-4,4,50),zeros(50));
    
    % Rotate the slice models to some appropriate position
    rotate(hsp1, [1 0 0], 90);
    rotate(hsp2, [0 1 0], 90);
    
    % Show the slice plot
    figure(3)
    hold on
    slice(x,y,z,v,hsp1.XData,hsp1.YData,hsp1.ZData)
    slice(x,y,z,v,hsp2.XData,hsp2.YData,hsp2.ZData)
    colormap parula
    shading faceted
    grid on
    axis equal
    axis([-4 4 -4 4 -4 4])
    view([1,1,1])
    

我来回答

Captcha 点击图片更换验证码