Matlab中繪製三維圖形

2022-01-12 雲龍派

 繪製三維曲線

1.用plot3()函數畫三維曲線

最基本的三維圖形函數為plot3,它將二維繪圖函數plot的有關功能擴展到三維空間,可以用來繪製三維曲線。其調用格式為:

plot3(x1,y1,z1,選項1,x2,y2,z2,選項2,…)

其中每一組x,y,z組成一組曲線的坐標參數,選項的定義和plot的選項一樣。當x,y,z是同維向量時,則x,y,z對應元素構成一條三維曲線。當x,y,z是同維矩陣時,則以x,y,z對應列元素繪製三維曲線,曲線條數等於矩陣的列數。

例:

t=0:pi/50:2*pi;

x=8*cos(t);

y=4*sqrt(2)*sin(t);

z=-4*sqrt(2)*sin(t);

plot3(x,y,z,'p');

title('Line in 3-D Space');

text(0,0,0,'origin');

xlabel('X');ylabel('Y');zlabel('Z');grid;

結果:

 2、三維網格圖的繪製

在 MATLAB 中,進行三維圖形繪製時,常常需要首先創建三維網格,也就是先創建 平面圖的坐標系。在 MATLAB 中,常用 meshgrid()函數生成網格數據,其調用格式如下。

[X,Y]=meshgrid(x,y):用於生成向量 x 和 y 的網格數據,即變換為矩陣數據 X 和 Y, 矩陣 X 中的行向量為向量 x,矩陣 Y 的列向量為向量 y。[X,Y]=meshgrid(x):生成向量 x 的網格數據,函數等同[X,Y]=meshgrid(x,x)。

[X,Y,Z]=meshgrid(x,y,z) :生成向量 x、y、z 的三維網格數據,生成的數據 X 和 Y 可分別表示三維繪圖中的 x 和 y 坐標。

三維網格圖形是指在三維空間內連接相鄰的數據點,形成網格。在MATLAB中繪製三維網格圖的函數主要有mesh()函數、meshc()函數和meshz()函數。其中,mesh()函數最常 用,其調用格式如下:

mesh(x,y,z):繪製三維網格圖,x、y、z 分別表示三維網格圖形在 x 軸、y 軸和 z 軸 的坐標,圖形的顏色由矩陣 z 決定。

mesh(Z):繪製三維網格圖,分別以矩陣 Z 的列下標、行下標作為三維網格圖的 x 軸、y 軸的坐標,圖形的顏色由矩陣 Z 決定。

mesh(...,C):輸入參數C用於控制繪製的三維網格圖的顏色。mesh(...,'PropertyName',PropertyValue,...):設置三維網格圖的指定屬性的屬性值。

函數 meshc()可繪製帶有等值線的三維網格圖,其調用格式與函數 mesh()基本相同, 但函數 meshc()不支持對圖形網格線或等高線指定屬性的設置。

函數 meshz()可繪製帶有圖形底邊的三維網格圖,其調用格式與函數 mesh()基本相同, 但函數 meshz()不支持對圖形網格線指定屬性的設置。

另外,函數ezmesh()、ezmeshc()和ezmeshz()可根據函數表達式直接繪製相應的三維網格圖。

由於網格線是不透明的,繪製的三維網格圖有時只能顯示前面的圖形部分,而後面的 部分可能被網格線遮住了,沒有顯示出來。 MATLAB中提供了命令 hidden 用於觀察圖形後面隱藏的網格,hidden 命令的調用格式如下:

hidden on:設置網格隱藏部分不可見,默認情況下為此狀態。

hidden off:設置網格的隱藏部分可見。

hidden:該命令用於切換網格的隱藏部分是否可見。

例:繪製簡單的三維網格圖

% 數據準備 

t=0:pi/10:pi; 

x=sin(t); 

y=cos(t);  

[X,Y]=meshgrid(x,y); 

z =X + Y;    

% 繪圖 

figure 

mesh (z,'FaceColor','W','EdgeColor','K')

grid 

title('三維網格圖'); 

3、三維表面圖的繪製

三維表面圖也可以用來表示三維空間內數據的變化規律,與之前講述的三維網絡圖的 不同之處在於對網格的區域填充了不同的色彩。在 MATLAB 中繪製三維表面圖的函數為 surf()函數,其調用格式如下:

surf(Z):繪製數據 Z 的三維表面圖,分別以矩陣 Z 的列下標、行下標作為三維網格圖的 x 軸、y 軸的坐標,圖形的顏色由矩陣 Z 決定。

surf(X, Y, Z):繪製三維表面圖,X、Y、Z 分別表示三維網格圖形在 x 軸、y 軸和 z 軸的坐標,圖形的顏色由矩陣 Z 決定。

surf(X, Y, Z, C):繪製三維表面圖,輸入參數 C 用於控制繪製的三維表面圖的顏色。

surf(..., 'PropertyName', PropertyValue):繪製三維表面圖,設置相應屬性的屬性值。

函數 surfc()用於繪製帶等值線的三維表面圖,其調用格式同函數 surf()基本相同,函數 surfl()可用於繪製帶光照模式的三維表面圖,與函數 surf()和 surfc()不同的調用格式如下:

surfl(...,'light'):以光照對象 light 生成一個帶顏色、帶光照的曲面。surfl(...,'cdata'):輸入參數 cdata 設置曲面顏色數據,使曲面成為可反光的曲面。

surfl(...,s):輸入參數 s 為一個二維向量[azimuth,elevation],或者三維向量[x,y,z],用於指定光源方向,默認情況下光源方位從當前視角開始,逆時針 45°。

例:簡單對 surf()函數進行舉例

% 數據準備 xi=-10:0.5:10; yi=-10:0.5:10; [x,y]=meshgrid(xi,yi); z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2); % 繪圖 surf(x,y,z)

4、三維切片圖的繪製

在MATLAB中slice()函數用於繪製三維切片圖。三維切片圖可形象地稱為「四維圖」,可以在三維空間內表達第四維的信息,用顏色來標識第四維數據的大小。slice()函數的調用格式如下:

slice(v, sx, sy, sz):輸入參數 v 為三維矩陣(階數為 m x n x p),x、y、z 軸默認狀態下分別為 1:m、1:n、1:p,數據 v 用於指定第四維的大小,在切片圖上顯示為不同的顏色,輸入參數 sx、sy、sz 分別用於指定切片圖在 x、y、z 軸所切的位置。

slice(x ,y, z, v, sx, sy, sz):輸入參數 x、y、z用於指定繪製的三維切片圖的 x、y、z軸。

slice(...,'method'):輸入參數method用於指定切片圖繪製時的內插值法,’method』 可以設置的參數有:』linear』(三次線性內插值法,默認)、』cubic』(三次立方內插 值法)、』nearest』(最近點內插值法)。

例:觀察函數在-2≤x≤2、-2≤y≤2、-2≤z≤2 上的體積情況

% 數據準備 

xi=-10:0.5:10; 

yi=-10:0.5:10; 

[x,y]=meshgrid(xi,yi); 

z=sin(sqrt(x.^2+y.^2))./sqrt(x.^2+y.^2); 

[x,y,z] = meshgrid(-2:.2:2, -2:.25:2, -2:.16:2); 

v = x.*exp(-x.^2-y.^2-z.^2); 

xslice = [-1.2,.8,2]; 

yslice = 2; 

zslice = [-2,0]; 

% 繪圖 

slice(x,y,z,v,xslice,yslice,zslice) 

結果

END

本文部分內容源於CSDN博主「樂清sss」,僅供參考學習,如內容、圖片有任何版權問題,請聯繫處理,24小時內刪除。

相關焦點

  • MATLAB繪製交互式圖形
    1.4299 -16.3536 0.2897 -16.0221 0.1776 -12.1547 0.2523 -7.9558 0.2336 -3.7569 0.1776 2.8729 0.1776 8.7293 0.3645MATLAB相關內容往期回顧MATLAB中繪製三維圖形
  • MATLAB三維圖形
    可以看出,MATLAB基本的三維圖形包括線型(line)、網格型(mesh)、區域型(area)、面型(surface)、方向矢量型(direction)、容積型(volumetric)等多種類型,圖中已經將各個函數所能夠繪製圖形的基本樣式做了小的縮略圖。本節介紹常用三維繪圖函數的使用。至於其他的繪圖函數,因篇幅有限,這裡不再介紹,請讀者查閱幫助文檔。
  • MATLAB繪製雙y軸圖形兩種方法
    繪製雙y軸圖形,可以進行有效的對比呈現,論文中經常用到。基本方法有兩種:1、plotyy函數:考慮兼容性,從2016版本之後不推薦使用。2、yyaxis方式:是MATLAB繼plotyy之後推出的畫雙y軸圖形的方式。
  • 【MATLAB圖像】— 三維圖形
    1、繪製三維曲線圖 plot3為三維繪圖的基本函數,格式為: plot3(x,y,z,LineSpec
  • MATLAB的ezplot函數繪製隱函數圖像
    ezplot(funx,funy,[tmin,tmax]) 繪製 funx(t) 和 funy(t) 在 tmin < t < tmax 上的圖形。ezplot(...,fig) 將圖窗繪製到由 fig 標識的圖窗窗口中。使用包含一個域的上述語法中的任意輸入參數組合。
  • MATLAB的stem函數繪製枝幹圖(實例加程序)
    如果 X 和 Y 都是向量,則 stem 將根據 X 中的對應項繪製 Y 中的各項。如果 X 是向量,Y 是矩陣,則 stem 將根據 X 指定的值集繪製 Y 的每列,這樣 Y 的一行中的所有元素都是根據相同的值而繪製。如果 X 和 Y 都是矩陣,則 stem 將根據 X 的對應列繪製 Y 的列。
  • 雙十一特輯---MATLAB繪製愛心表白程序
    clc;clear all;close all;% matlab動態繪製三維心形圖程序如下,核心是isosurface函數,% verts存儲了心形曲面各點的坐標,而faces存儲了各點的連接順序中矩陣的入門知識MATLAB的輸入輸出input函數Matlab對fig文件導出數據matlab多項式(定義、四則計算、求根)MATLAB的switch選擇語句和input輸入語句視頻講解MATLAB的switch選擇語句和input輸入語句matlab中的歸一化處理的三種方法MATLAB求函數的導數和偏導
  • 如何用Matlab繪製圖形
    在MATLAB中繪製簡單函數的圖形有以下幾個步驟:1.先定義自變量x,給定自變量x的定義域
  • Matlab編程並繪製函數或者信號包絡線
    envelope繪製包絡線*t);figure;plot(t,y);hold on% 包絡線繪製[up,lo] = envelope(y);plot(t,up,t,lo,'linewidth',1.5)legend('signal','上包絡線','下包絡線')hold offMATLAB相關內容往期回顧MATLAB中繪製三維圖形
  • MATLAB繪製三維空間曲面
    用mesh或surf函數,繪製下面方程所表示的三維空間曲面,x和y的取值範圍設為[-3,3]。/等subplot(2,2,1);&將圖形分成2*2個小方格mesh(X,Y,z);subplot(2,2,2);surf(X,Y,z);subplot(2,2,3);meshc(X,Y,z);subplot(2,2,4);meshz(X,Y,z);
  • Origin繪圖教程:三維圖形的繪製(附軟體下載)
    Origin不僅可以繪製二維的平面圖形,還可以將數據以三維圖形的方式呈現。
  • 值得收藏 | 如何用matlab做出酷炫的圖像
    重點介紹三維圖形的繪製部分。1、基礎知識1.1 二維圖形繪製plot函數是Matlab繪製二維圖形的常用函數,該函數將數組中的數據點繪連起來構成一條連續的曲線。,可以採用matlab中的slice函數。
  • MATLAB中圖片保存的五種方法(一)
    向量圖形文件存儲用於重新繪製圖窗的命令。在某些情況下,向量圖形格式可能產生三維排列有誤的對象。某些應用程式支持對向量圖形格式進行大量編輯,但是某些應用程式不支持調整圖形大小以外的編輯。最佳做法是在圖窗仍處於 MATLAB 中時進行所有必要的更改。通常,生成向量圖形文件時,saveas 會使用繪圖渲染器。對於一些複雜圖窗,saveas 會改用 OpenGL® 渲染器。
  • MATLAB繪製圖形
    MATLAB繪製條形圖MATLAB 中使用 bar 命令繪製一個二維條形圖。具體示例如果有一個包含10名學生的教室,這些學生獲得的分數的百分比是75,58,90,87,50,85,92,75,60和95,使用這個數據,我們將繪製條形圖。
  • Python matplotlib繪圖示例 - 繪製三維圖形
    它可以繪製各種圖形,下面就學習了下Python中的matplotlib模塊,如何繪製三維圖形。示例代碼一:# coding=utf-8import numpy as npimport matplotlib.pyplot as pltimport mpl_toolkits.mplot3da,b = np.mgrid[-2:2:20j,-2:2:20j]#測試數據c=a*np.exp(-a**2-b**2)#三維圖形
  • MATLAB圖形保存方法
    Matlab中圖片保存的四種方法:[size=1em]matlab的繪圖和可視化能力是不用多說的,可以說在業內是家喻戶曉的。
  • matlab三維作圖教程
    MATLAB還有一個peaks 函數,稱為多峰函數,常用於三維曲面的演示。  例  繪製標準三維曲面圖形。,z,c)  例  繪製三維圖形:(1) 繪製魔方陣的三維條形圖。在MATLAB中,每個圖形窗口只能有一個色圖。色圖是m×3 的數值矩陣,它的每一行是RGB三元組。色圖矩陣可以人為地生成,也可以調用MATLAB提供的函數來定義色圖矩陣。3.三維表面圖形的著色三維表面圖實際上就是在網格圖的每一個網格片上塗上顏色。surf函數用預設的著色方式對網格片著色。除此之外,還可以用shading命令來改變著色方式。
  • 一文了解Matlab如何製作動態圖像
    今天的推文,我們主要來介紹matlab中幾種繪製動態圖像的方法。
  • MATLAB中,你必須知道的!(二)
    三·matlab的繪圖 1·plot(x1,y1,option1,x2,y2,option2);畫二維曲線 2·plot3(x1,y1,z1,option1,x2,y2,z2,option2);畫三維 曲線 3·mesh(X,Y,Z,C);畫三維網格曲面X,Y,Z為矩陣 4·surf(X,Y,Z,C);畫三維陰影曲面,X,Y,Z為矩陣 5·[X,Y]=
  • MATLAB圖形可視化
    最近通過學習三維繪圖之後,MATLAB在某些繪圖方面確實有著不可比擬的優勢。2、填充區域的繪製【Introduction At first】:linspace(X1,X2,N)函數:linspace是MATLAB中的一個指令,用於產生X1,X2之間的N點行矢量。其中X1、X2、N分別為起始值、中止值、元素個數。若預設N,默認將點數設置為100。