zoukankan      html  css  js  c++  java
  • Matlab学习笔记(一)—— 三维图形绘制

      这学期公选课选的是MATLAB,所以准备把这学期所学习的整理到博客上,作为记录,哇咔咔~

    一、三维函数图:

    x=cos(t), y=sin(t), z=t     %0≤t ≤4*pi
    t=0:0.001:4*pi;    %t的取值范围
    x=cos(t);y=sin(t);z=t;    
    plot3(x,y,z)
    xlabel('x轴'),ylabel('y轴'),zlabel('z轴')    %为坐标轴加上标签
    grid on     %为图像加上网格

      三维函数的绘制一般使用plot3()函数,其三个基本参数是三个参数函数,第四个参数可以改变函数的颜色,或者虚实线,如plot3(x, y, z, 'r:'),其绘制的函数图像则为红色虚线的,上述脚本的运行结果如下:

        

     二、三维饼图:

    pie3([4 3 6 8 9])

       直接调用上述脚本既可以绘制出一个饼图,如果这样调用pie3([4 3 6 8 9], [0 0 1 0 0]),则在第二个向量中值为1的部分会在饼图中以突出的方式显示,上述脚本运行结果如下:

    三、绘制空间多边形:

    y1=rand(3,5);
    y2=rand(3,5);
    y3=rand(3,5); 
    fill3(y1,y2,y3,'m');
    hold on;
    plot3(y1,y2,y3,'yo')

      首先rand(3, 5)产生了一个3 * 5 的随机数矩阵,上述脚本中先产生了y1,y2, y3三个3 * 5 的随机矩阵,其中

      A = ( y1[0][0], y2[0][0],y3[0][0] ),

        B = ( y1[1][0], y2[1][0], y3[1][0] ),   

          C = ( y1[2][0], y2[2][0], y3[2][0] )

        分别是第一个三角形的三个顶点,其他以此类推。所以fill3(y1,y2,y3,'m'); 共产生了5个三角形,并以粉色填充,plot3(y1,y2,y3,'yo')语句是在每个三角形的顶点加上黄色的小圈,而由于之前加上了hold on; 所以前面的粉色三角形不会被覆盖,运行效果如下:

    四、三维网格图:

      1、mesh()函数生成网格图:

    h2=[1 1;1 -1]
    h4=[h2 h2;h2 -h2]
    h8=[h4 h4;h4 -h4]
    mesh(h8)

      上面由迭代生成一个8*8的矩阵,即:

         1     1     1     1     1     1     1     1
         1    -1     1    -1     1    -1     1    -1
         1     1    -1    -1     1     1    -1    -1
         1    -1    -1     1     1    -1    -1     1
         1     1     1     1    -1    -1    -1    -1
         1    -1     1    -1    -1     1    -1     1
         1     1    -1    -1    -1    -1     1     1
         1    -1    -1     1    -1     1     1    -1

       mesh()函数以矩阵的下标为x,y坐标,生成一个网格图,运行效果如下:

      2、meshgrid()函数:

    a=[1:2]
    b=[3:5]
    [A,B]= meshgrid(a,b)

      上述生成了A,B两个矩阵:

    A =                                       B =                                                
          1     2                                   3     3 
          1     2                                   4     4      
          1     2                                   5     5                                      

      命令等效于:A=ones(size(b))*a;  B=b'*ones(size(a))

      3、利用meshgrid()函数和mesh()函数生成网格图:

    x=-5:5; y=x;          
    [X,Y]=meshgrid(x,y);        
    Z=X.^2+Y.^2 ;            
    mesh(X,Y,Z)

      上述脚本先使用meshgrid()函数生成11 * 11的矩阵,再使用mesh()生成网格图;

    五、三维曲面图:

      首先三维曲面图和三维网格图不同,其区别有: 

        (1)网线图:线条有颜色,内部是无颜色

        (2)曲面图:线条是黑色的,内部有颜色(把线条之间的空挡填充颜色,沿z轴按每一网格变化)

       

      1、使用peak()函数: 

       为了方便测试立体绘图,MATLAB提供了一个peaks函数,可产生一个凹凸有致的曲面,包含了三个局部极大点及三个局部极小点,其方程式为: 

    z = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) ... - 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2) ... - 1/3*exp(-(x+1).^2 - y.^2)

      2、surfc()函数:

    [X,Y,Z]=peaks(20);
     surfc(X,Y,Z)

      上述脚本先调用peaks()函数,再使用surfc()函数便可得出下列图形:

      3、colormap()函数:

         matlab 的颜色数据集合为红、绿、蓝三颜色矩阵 [R,G,B],维数m×3,R,G,B在[0 1]区间连续取值,理论上颜色种类可达无穷多种,然后我们使用colormap()就可以设置图像颜色,如colormap([0.5 0.7 0.8]),当然,matlab也有常用颜色数据,见下表:  

    • jet —— 饱和值色图II
    • hsv —— 饱和值色图
    • gray —— 线性灰度色图
    • hot —— 暖色色图
    • cool —— 冷色色图
    • bone —— 兰色调灰色图
    • copper —— 铜色色图
    • pink —— 粉红色图
    • prism —— 光谱色图
    • flag —— 红、白、蓝交替色图

        如我们调用colormap gray; 就可得到相应的线性灰度色图。

    六、图像修饰方法:

      1、shading:

      我们可以使用colormap()函数进行颜色的修饰,还可以使用shading来控制表面和块等图形对象颜色的渲染:

    [X,Y,Z]=sphere(50); 
    surfc(X,Y,Z)
    colormap cool
    shading interp
    axis equal 

      上述脚本中,我们画了一个球:

      shading有多种选项,常用为:faceted / flat / interp, 等等。

      //To Be Continued.

      

      


      

  • 相关阅读:
    java+selenium+new——同一个标签窗口里 ,访问多个网页的后退driver.navigate().back()、前进driver.navigate().forward()、刷新driver.navigate().refresh()等功能 。以及获取当前页面的title属性driver.getTitle()和获取当前页面的url地址driver.getCurrentUrl()
    SoapUI接口测试——关联——参数化
    SoapUI接口测试——添加测试套件——new TestSuite——(类似于postman里面的集合)——添加测试步骤——teststeps(测试步骤)
    java+selenium+new——获取网页源代码driver.getPageSource()
    g++命令行详解
    hdoj_1503Advanced Fruits
    指针遍历vector向量
    最长公共子序列
    hdoj_1087Super Jumping! Jumping! Jumping!
    pcc32应用1
  • 原文地址:https://www.cnblogs.com/Vincent-Bryan/p/5892845.html
Copyright © 2011-2022 走看看