• matlab中画三维图形


    这里主要讲述两个方法用matlab画三维图形:

    1.mesh函数

    先看一个简单的例子:

    1 x = 1:1:3;
    2 y = 1:1:4;
    3 [X, Y] = meshgrid(x, y);
    4 Z = zeros(4,3);
    5 Z = [   1 2 3;
    6         2 3 4;
    7         3 4 5;
    8         4 5 6]
    9 mesh(X, Y, Z);

    这是个简单的用mesh函数画的三维图,结果是:

    这里需要注意一点:

    矩阵Z的行列,Z的行是Y坐标系的值(meshgrid的右边位置的数y),Z的列是X坐标系的值(meshgrid的左边位置的数x)

    那下面讲下我怎么将自己的数据导入到Z矩阵中:

    1.简单的方法是直接将数据输入到矩阵Z中,注意行列:

      1 x = 1:1:22;
      2 y = 1:1:101;
      3 [X,Y] = meshgrid(x,y);
      4 Z = zeros(101,22);
      5 Z = [
      6 1 1 1 1 2 2 3 4 4 4 4 4 4 4 5 4 4 4 4 4 4 4 ;
      7 1 1 1 1 2 2 2 4 4 4 4 4 4 4 4 4 4 4 4 4 5 4 ;
      8 1 1 1 1 1 2 2 4 4 4 4 4 4 4 4 4 4 4 4 5 4 4 ;
      9 1 1 1 1 2 2 3 4 4 4 4 4 4 4 4 4 4 4 4 5 4 4 ;
     10 1 1 1 1 2 2 3 4 4 4 4 4 4 4 5 4 4 4 4 4 4 4 ;
     11 1 1 1 1 2 2 3 4 4 4 4 4 4 4 5 4 4 4 4 4 4 4 ;
     12 1 1 1 1 2 2 2 4 4 4 4 4 4 4 5 4 4 4 4 4 4 4 ;
     13 1 1 1 1 1 1 1 4 4 4 4 4 4 4 5 4 4 4 4 4 4 4 ;
     14 1 1 1 1 1 1 2 4 4 4 4 4 4 4 5 4 4 4 4 4 4 4 ;
     15 1 1 1 1 2 2 2 4 4 4 4 4 4 4 5 4 4 4 4 4 4 4 ;
     16 1 1 1 2 2 2 3 4 4 4 4 4 5 4 4 4 4 4 4 4 4 4 ;
     17 1 1 1 2 2 2 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 ;
     18 1 1 1 2 2 2 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 ;
     19 1 1 1 2 2 2 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 ;
     20 1 1 1 1 1 1 1 4 4 4 4 4 4 4 4 5 4 4 4 4 4 4 ;
     21 1 1 1 1 2 2 2 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 ;
     22 1 1 1 1 2 2 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 ;
     23 1 1 1 2 2 2 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 ;
     24 1 1 1 2 2 2 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 ;
     25 4 1 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 ;
     26 4 1 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 ;
     27 1 1 1 1 1 2 2 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 ;
     28 1 1 1 1 2 2 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 ;
     29 1 1 1 2 2 2 3 4 4 4 4 4 4 4 4 5 4 4 4 4 4 4 ;
     30 1 1 1 2 2 2 3 4 4 4 4 4 4 4 5 4 4 4 4 4 4 4 ;
     31 1 1 1 2 2 2 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 ;
     32 4 1 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 ;
     33 4 1 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 ;
     34 1 1 1 1 1 1 2 4 4 4 4 4 4 4 4 5 4 4 4 4 4 4 ;
     35 1 1 1 1 2 2 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 ;
     36 1 1 1 2 2 2 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 ;
     37 1 1 1 2 2 2 3 4 4 4 4 4 4 4 5 4 4 4 4 4 4 4 ;
     38 1 1 1 2 2 2 3 4 4 4 4 4 4 4 5 4 4 4 4 4 4 4 ;
     39 1 1 1 2 2 2 3 4 4 4 4 4 4 4 5 4 4 4 4 4 4 4 ;
     40 4 1 4 4 4 4 4 4 4 4 4 4 4 4 5 4 4 4 4 4 4 4 ;
     41 4 1 4 4 4 4 4 4 4 4 4 4 4 4 5 4 4 4 4 4 4 4 ;
     42 1 1 1 1 2 2 3 4 4 4 4 4 4 4 5 4 4 4 4 4 4 4 ;
     43 1 1 1 1 2 2 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 ;
     44 1 1 1 1 2 2 3 4 4 4 4 4 4 5 4 4 4 4 4 4 4 4 ;
     45 1 1 1 1 2 2 3 4 4 4 4 4 4 5 4 4 4 4 4 4 4 4 ;
     46 1 1 1 1 2 2 3 4 4 4 4 4 4 5 4 4 4 4 4 4 4 4 ;
     47 4 1 4 4 4 4 4 4 4 4 4 4 4 4 5 4 4 4 4 4 4 4 ;
     48 4 1 4 4 4 4 4 4 4 4 4 4 4 4 5 4 4 4 4 4 4 4 ;
     49 1 1 1 1 2 2 3 4 4 4 4 4 4 4 5 4 4 4 4 4 4 4 ;
     50 1 1 1 1 2 2 3 4 4 4 4 4 4 4 5 4 4 4 4 4 4 4 ;
     51 1 1 1 2 2 2 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 ;
     52 1 1 1 2 2 2 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 ;
     53 1 1 1 1 2 2 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 ;
     54 4 1 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 ;
     55 4 1 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 ;
     56 1 1 1 1 2 2 2 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 ;
     57 1 1 1 1 2 2 3 4 4 4 4 4 4 5 4 4 4 4 4 4 4 4 ;
     58 1 1 1 2 2 2 3 4 4 4 4 4 4 4 4 4 4 4 5 4 4 4 ;
     59 1 1 1 2 2 2 3 4 4 4 4 4 4 4 4 5 4 4 4 4 4 4 ;
     60 1 1 1 2 2 2 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 ;
     61 4 1 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 ;
     62 4 1 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 ;
     63 1 1 1 1 2 2 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 ;
     64 1 1 1 2 2 2 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 ;
     65 1 1 1 1 2 2 3 4 4 4 4 4 4 5 4 4 4 4 4 4 4 4 ;
     66 1 1 1 1 2 2 3 4 4 4 4 4 4 5 4 4 4 4 4 4 4 4 ;
     67 1 1 1 1 2 2 3 4 4 4 4 4 4 5 4 4 4 4 4 4 4 4 ;
     68 4 1 4 4 4 4 4 4 4 4 4 4 4 5 4 4 4 4 4 4 4 4 ;
     69 4 1 4 4 4 4 4 4 4 4 4 4 4 5 4 4 4 4 4 4 4 4 ;
     70 1 1 1 1 2 2 3 4 4 4 4 4 4 5 4 4 4 4 4 4 4 4 ;
     71 1 1 1 1 2 2 3 4 4 4 4 4 4 5 4 4 4 4 4 4 4 4 ;
     72 1 1 1 2 2 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 ;
     73 1 1 1 2 2 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 ;
     74 1 1 1 2 2 2 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 ;
     75 4 1 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 ;
     76 4 1 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 ;
     77 1 1 1 2 2 2 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 ;
     78 1 1 1 2 2 2 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 ;
     79 1 1 1 1 2 2 3 4 4 4 4 4 4 5 4 4 4 4 4 4 4 4 ;
     80 1 1 1 1 2 2 2 4 4 4 4 4 4 5 4 4 4 4 4 4 4 4 ;
     81 1 1 1 1 2 2 3 4 4 4 4 4 4 4 5 4 4 4 4 4 4 4 ;
     82 4 1 4 4 4 4 4 4 4 4 4 4 4 5 4 4 4 4 4 4 4 4 ;
     83 4 1 4 4 4 4 4 4 4 4 4 4 4 5 4 4 4 4 4 4 4 4 ;
     84 1 1 1 1 2 2 2 4 4 4 4 4 4 5 4 4 4 4 4 4 4 4 ;
     85 1 1 1 1 2 2 2 4 4 4 4 4 4 5 4 4 4 4 4 4 4 4 ;
     86 1 1 1 2 2 3 3 4 4 4 4 4 4 4 4 4 4 4 4 5 4 4 ;
     87 1 1 1 2 2 3 3 4 4 4 4 4 4 4 4 4 4 4 5 4 4 4 ;
     88 4 1 4 4 4 4 4 4 4 4 4 4 4 4 5 4 4 4 4 4 4 4 ;
     89 4 1 4 4 4 4 4 4 4 4 4 4 4 4 5 4 4 4 4 4 4 4 ;
     90 4 1 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 4 4 ;
     91 1 1 1 2 2 3 3 4 4 4 4 4 4 4 4 4 4 4 4 5 4 4 ;
     92 1 1 1 2 2 3 3 4 4 4 4 4 4 4 4 4 4 4 4 5 4 4 ;
     93 1 1 1 1 2 2 3 4 4 4 4 4 4 5 4 4 4 4 4 4 4 4 ;
     94 1 1 1 1 2 2 3 4 4 4 4 4 4 4 5 4 4 4 4 4 4 4 ;
     95 4 1 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 ;
     96 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ;
     97 4 1 4 4 4 4 4 4 4 4 4 4 4 4 5 4 4 4 4 4 4 4 ;
     98 1 1 1 1 2 2 3 4 4 4 4 4 4 5 4 4 4 4 4 4 4 4 ;
     99 1 1 1 1 2 2 3 4 4 4 4 4 4 5 4 4 4 4 4 4 4 4 ;
    100 1 1 1 2 2 2 3 4 4 4 4 4 4 4 4 4 4 4 4 5 4 4 ;
    101 1 1 2 2 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 5 4 4 ;
    102 1 1 2 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 ;
    103 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ;
    104 1 1 2 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 5 ;
    105 1 1 2 2 2 3 3 4 4 4 4 4 4 4 4 4 4 4 4 5 4 4 ;
    106 1 1 1 2 2 3 3 4 4 4 4 4 4 4 4 4 4 4 4 5 4 4 ;
    107     ];
    108 mesh(X, Y, Z);
    109 xlabel('cluster');
    110 ylabel('mrf node');
    111 zlabel('max label num');

    结果是:

    方法2用plot3画:

    首先用c++写段代码,注意数据存储的方式:

     1     fp = fopen("D://cluster_num_max.text", "w");
     2     if(fp)
     3     {
     4         for (GLong v = 0; v < mrf.size(); v++)
     5         {
     6             for (GLong k = 0; k < canopy; k++)
     7             {
     8                 fprintf(fp, "%ld ", v + 1 );
     9             }
    10         }
    11         fprintf(fp, "
    ");
    12         for (GLong v = 0; v < mrf.size(); v++)
    13         {
    14             for (GLong k = 0; k < canopy; k++)
    15             {
    16                 fprintf(fp, "%ld ", k + 1 );
    17             }
    18         }
    19         fprintf(fp, "
    ");
    20         for (GLong v = 0; v < mrf.size(); v++)
    21         {
    22             for (GLong k = 0; k < canopy; k++)
    23             {
    24                 GLong lCanopyTemp = mrf[v].stClusterNum_min_max[k].lLabel_pruning_cluster_num_max;
    25                 fprintf(fp, "%ld ", lCanopyTemp );
    26             }
    27             //fprintf(fp, ";
    ");
    28         }
    29     }
    30     //fprintf(fp, "
    ");
    31     fclose(fp);
    32     fp = NULL;

    得到cluster_num_max.text后,matlab就可以导入数据了。

    1 load('D:\cluster_num_max.text');
    2 y = cluster_num_max(1,:);
    3 x = cluster_num_max(2,:);
    4 z = cluster_num_max(3,:);
    5 plot3(x,y,z);
    6 xlabel('cluster');
    7 ylabel('mrf node');
    8 zlabel('max label num')

    结果是:

    补充mesh函数:

     1 [x,y]=meshgrid(-8:0.5:8);
     2 z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2+eps);
     3 subplot(2,2,1);
     4 mesh(x,y,z);
     5 title('mesh(x,y,z)')
     6 subplot(2,2,2);
     7 meshc(x,y,z);
     8 title('meshc(x,y,z)')
     9 subplot(2,2,3);
    10 meshz(x,y,z)
    11 title('meshz(x,y,z)')
    12 subplot(2,2,4);
    13 surf(x,y,z);
    14 title('surf(x,y,z)')

     最后说一下plot3和mesh的图怎么不一样

    左图是plot3,右图是mesh。可以看到当(1,4,1)数据紧接着是(2,1,1),它们相连了。

  • 相关阅读:
    Delphi命名规则
    highcharts 折线,饼状,条状综合图
    Highcharts创建一个简单的柱状图
    创建一个简单的WCF程序
    VS快捷键大全
    2021.05.28 手写简易web服务器
    2021.05.23 春眠不觉晓,optional知多少……
    springboot整合ActiveMQ实现异步交易
    安利一款云容器管理工具portainer……
    uglifyjs压缩js文件(指令压缩/ 批量压缩/ 编程方式压缩)
  • 原文地址:https://www.cnblogs.com/faith0217/p/4123458.html
Copyright © 2020-2023  润新知