怎么用Matlab画三维立体图

假如有一个x,y,depth的三维数据,表示一个长方体水槽中水的温度,怎么画一个三维长方体图同时显示表层,一个垂直剖面和另一个相邻的垂直剖面在三维坐标轴中

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7805663
  • 你也可以参考下这篇文章:【Matlab】模拟退火+最低水平线解决物流上的二维装箱问题
  • 除此之外, 这篇博客: 【数学建模】2016年全国大学生数学建模-系泊系统全面解析(附MATLAB实现部分代码)中的 海水静止时,不同风速条件下相关参数的求解 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    ifabs(sum(H)-18)<0.01
            break
        end
        x=[x;h,sum(H)];
    end
    disp(R)
    

    LastAngle = 90-phi_veritical(end);
    disp(LastAngle)
    

    绘图

    %作图部分
    x_vector=R';
    

    cumsum 是 MATLAB 求解累计和的函数。我们以一个 cumsum 的一个例子为例说明这个函数的用法。

    例:

    A = 1:5; B = cumsum(A)
    
    B = 1×5
    
         1     3     6    10    15
    

    对向量  进行累加和

    x=cumsum(x_vector);
    y_vector = H';
    y=cumsum(y_vector);
    y1=y(1:end-1);
    plot(x,y1,'LineWidth',1.2)
    view(180,90)
    

    绘制标签

    ylabel('Deep')
    xlabel('R')
    grid on
    

    定义常量(使用 SI 制单位)

    function [phi_veritical,H,R]= H_cal(h,v_wind)
    %重力加速度
    g=9.8;
    %海水密度
    rho_haishi = 1.025 * 10 ^(3);
    %钢密度(合金钢)
    rho_gang = 7.8 * 10 ^ 3;
    %钢桶质量
    m_gangtong = 100;
    %钢桶体积
    V_gangtong = pi * (0.3/2)^2 * 1;
    %浮标质量
    m_fubiao = 1000;
    %每段锚链长度
    l_maolian = 105 * 10 ^(-3);
    m_maolian_for_everymile = 7;
    %锚链总长度
    l_total_maolian = 22.05;
    %总循环遍历数
    n=floor(l_total_maolian / l_maolian) + 5;
    %钢管长度
    l_gangguan = 1;
    

    定义变量

    %%搜索变量h——吃水深度
    %%钢管质量
    m_gangguan = 10;
    %%钢管体积:钢管共4节,每节长度1m,直径为50mm,每节钢管的质量为10kg。
    v_gangguan = l_gangguan *(pi*(50/2 * 10^(-3))^2);
    %%重物球质量
    m_zhongwuqiu = 1200;
    %% 第二题注释此处
    %%重物球体积(选用钢球,认为实心)
    V_zhongwuqiu = m_zhongwuqiu / rho_gang;
    %每段锚链的质量
    m_maolian = l_maolian * m_maolian_for_everymile;
    %每段锚链的体积(认为实心)
    v_maolian = m_maolian / rho_gang;
    %定义钢管、钢桶和锚链的倾斜角度储存向量
    phi_veritical = [];
    phi = [];
    %定义倾斜角度弧度变量
    arc_tan_inner = [];
    %计算水深(初始条件水深等于浮标浸没深度)
    H = h;
    %浮标游动半径(初始值)
    R=[];
    

    浮标受力和风速的计算

    %%%浮标受力;
    %D是法向投影
    D = 2 * ( 2 - h);
    %风速大小(<1>考虑12和24<2>考虑36<3>考虑36)
    %v_wind = 12;
    

    浮标水平方向计算

    T_cos_theta = 0.625.*D * (v_wind)^2;
    

    浮标垂直方向计算

    T_sin_theta = rho_haishi * g * ( h* pi * 1^2) - m_fubiao * g;
    

    倾角的计算

    浮标 T_sin 和 T_cos 即为第一节钢管的初始值

    arc_tan_inner = ( (2 *T_sin_theta - ( m_gangguan * g -  rho_haishi * g * v_gangguan))) / (2* T_cos_theta);
    phi = atan(arc_tan_inner);
    H =[ H , l_gangguan*sin(phi)];
    R = [R , l_gangguan*cos(phi)];
    phi_veritical = [phi_veritical 90-phi*180/pi];
    T_sin_theta = T_sin_theta - ( m_gangguan * g -  rho_haishi * g * v_gangguan);
    
    for i_bianli = 2 : n
        if(i_bianli <= 4)
    

    基于钢管共 4 节,每节长度 1m,直径为 50mm,每节钢管的质量为 10kg 条件,对于钢管的计算可得出以下表达式

        arc_tan_inner = ( (2 *T_sin_theta - ( m_gangguan * g -  rho_haishi * g * v_gangguan))) / (2* T_cos_theta);
    

    前方的 T_sin_theta 对应 i_bianli

    计算倾斜角度

        phi = atan(arc_tan_inner);
        H = [H , l_gangguan*sin(phi)];
        R = [R , l_gangguan*cos(phi)];
        phi_veritical = [phi_veritical 90-phi*180/pi];
        T_sin_theta = T_sin_theta - ( m_gangguan * g -  rho_haishi * g * v_gangguan);
        elseif(i_bianli == 5)
    

    而对于重物球和钢桶的计算,依据以下式子

        arc_tan_inner = ( (2 *T_sin_theta - (m_zhongwuqiu * g - rho_haishi * g * V_zhongwuqiu) )) / (2* T_cos_theta);
    

    计算倾斜角度 

        phi = atan(arc_tan_inner);
        H = [H , l_gangguan*sin(phi)];
        R = [R , l_gangguan*cos(phi)];
        phi_veritical = [phi_veritical 90-phi*180/pi];
    

    计算 

        T_sin_theta = T_sin_theta - (m_zhongwuqiu * g - rho_haishi * g * V_zhongwuqiu) - (m_gangtong * g - rho_haishi * g * V_gangtong);
    
        elseif(i_bianli == 6)
    

    对于锚链的计算,基于以下式子

        arc_tan_inner = ( (2 *T_sin_theta - ( m_maolian * g -  rho_haishi * g * v_maolian))) / (2* T_cos_theta);
    

    计算倾斜角度 

        phi = atan(arc_tan_inner);
        H = [H , l_maolian*sin(phi)];
        R = [R , l_maolian*cos(phi)];
        phi_veritical = [phi_veritical 90-phi*180/pi];
    

    计算 

        T_sin_theta = T_sin_theta - ( m_maolian * g -  rho_haishi * g * v_maolian);
        else
    

    锚链计算部分

        arc_tan_inner = ( (2 *T_sin_theta - ( m_maolian * g -  rho_haishi * g * v_maolian))) / (2* T_cos_theta);
    

    计算倾斜角度 

        phi = atan(arc_tan_inner);
        H = [H , l_maolian*sin(phi)];
        R = [R , l_maolian*cos(phi)];
        phi_veritical = [phi_veritical 90-phi*180/pi];
    

    计算 

        T_sin_theta = T_sin_theta - ( m_maolian * g -  rho_haishi * g * v_maolian);
        end
    end
    
    end
    
    LastAngle=[];
    

    对重物球质量和吃水深度进行迭代

    for m_zhongwuqiu =3078:6000
    for h = 0:0.00001:2
        [phi_veritical,H,R]=H_zwq(h,36,m_zhongwuqiu);
    

    如果  则说明这一节的锚链松弛

        LastAngle = 90-phi_veritical(end);
        ifabs(sum(H)-18)<0.01
            break
        end
    end
        disp(m_zhongwuqiu)
    

    依据钢桶倾斜角不超过 5° 和锚链在锚点与海床的夹角不超过 16° 的迭代终止条件

    if  LastAngle <= 16 && abs(phi_veritical(5)) < 5
        break
    end
    end
    disp(LastAngle)
    

    绘图部分

    x_vector=R';
    x=cumsum(x_vector);
    y_vector = H';
    y=cumsum(y_vector);
    y1=y(1:end-1);
    plot(x,y,'LineWidth',1.2)
    view(180,90)
    ylabel('Deep')
    xlabel('R')
    grid on
    

    函数参数部分添加入重物球质量 重物球质量

    function [phi_veritical,H,R]= H_zwq(h,v_wind,m_zhongwuqiu)
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^