matlab 图形绘制,MatLab图形绘制功能
MatLab圖形繪制功能
MatLab % 0到10的1000個點的x座標 y=sin(x); % 對應的y座標 plot(x,y); % 繪圖 Y=sin(10*x); plot(x,y, r: ,x,Y, b ) % 同時畫兩個函數 · 若要改變顏色,在座標對後面加上相關字串即可: x=0:0.01:10; plot(x,sin(x), r ) 若要同時改變顏色及圖線型態(Line style),也是在坐標對後面加上相關字串即可: plot(x,sin(x), r* ) 用axis([xmin,xmax,ymin,ymax])函數來調整圖軸的范圍 axis([0,6,-1.5,1]) MATLAB也可對圖形加上各種注解與處理: xlabel( x軸 ); % x軸注解 ylabel( y軸 ); % y軸注解 title( 余弦函數 ); % 圖形標題 legend( y = cos(x) ); % 圖形注解 gtext( y = cos(x) ); % 圖形注解 ,用鼠標定位注解位置 grid on; % 顯示格線 fplot的指令可以用來自動的畫一個已定義的函數分布圖,而無須產生繪圖所須要的一組數據做為變數。其語法為fplot( fun ,[xmin xmax ymin ymax]),其中 fun為一已定義的函數名稱,例如 sin, cos等等;而 xmin, xmax, ymin, ymax 則是設定繪圖橫軸及縱軸的下限及上限。 以下的例子是將一函數 f(x)=sin(x)/x 在-20 fplot( sin(x)./x ,[-20 20 -0.4 1.2]) 【例】畫橢圓 a = [0:pi/50:2*pi] ;%角度 X = cos(a)*3;%參數方程 Y = sin(a)*2; plot(X,Y); xlabel( x ), ylabel( y ); title( 橢圓 ) 圖形窗口的分割一般用命令subplot: subplot(2,2,1); subplot(2,3,4); MATLAB還有其他各種二維繪圖函數,以適合不同的應用,詳見下表。 小整理:其他各種二維繪圖函數 bar 長條圖 errorbar 圖形加上誤差范圍 fplot 較精確的函數圖形 polar 極座標圖 hist 累計圖 rose 極座標累計圖 stairs 階梯圖 stem 針狀圖 fill 實心圖 feather 羽毛圖 compass 羅盤圖 quiver 向量場圖 當資料點數量不多時,長條圖是很適合的表示方式: close all; % 關閉所有的圖形視窗 x=1:10; y=rand(size(x)); bar(x,y); 如果已知資料的誤差量,就可用errorbar來表示。下例以單位標準差來做資料的誤差量: x = linspace(0,2*pi,30); y = sin(x); e = std(y)*ones(size(x)); errorbar(x,y,e) 對於變化劇烈的函數,可用fplot來進行較精確的繪圖,會對劇烈變化處進行較密集的取樣,如下例: fplot( sin(1/x) , [0.02 0.2]); % [0.02 0.2]是繪圖范圍 若要產生極座標圖形,可用polar: theta=linspace(0, 2*pi); r=cos(4*theta); polar(theta, r); 對於大量的資料,我們可用hist來顯示資料的分 情況和統計特性。下面幾個命令可用來驗證randn產生的高斯亂數分 : x=randn(5000, 1); % 產生5000個 m=0,s=1 的高斯亂數 hist(x,20); % 20代表長條的個數 rose和hist很接近,只不過是將資料大小視為角度,資料個數視為距離,并用極座標繪制表示: x=randn(1000, 1); rose(x); stairs可畫出階梯圖: x=linspace(0,10,50); y=sin(x).*exp(-x/3); stairs(x,y); stems可產生針狀圖,常被用來繪制數位訊號: x=linspace(0,10,50); y=sin(x).*exp(-x/3); stem(x,y); stairs將資料點視為多邊行頂點,并將此多邊行涂上顏色: x=linspace(0,10,50); y=sin(x).*exp(-x/3); fill(x,y, b ); % b 為藍色 feather將每一個資料點視復數,并以箭號畫出: theta=linspace(0, 2*pi, 20); z = cos(theta)+i*sin(theta); feather(z); compass和feather很接近,只是每個箭號的起點都在圓點: theta=linspace(0, 2*pi, 20); z = cos(theta)+i*sin(theta); compass(z); 二、 三維立體圖形 三維繪圖函數 contour 二維等值線圖,即從上向下看contour3等值線圖 contour3 等值線圖 fill3 填充的多邊形 mesh 網格圖 meshc 具有基本等值線圖的網格圖 meshz 有零平面的網格圖 pcolor 二維偽彩色繪圖,即從上向下看surf圖 plot3 直線圖 quiver 二維帶方向箭頭的速度圖 surf 曲面圖 surfc 具有基本等值線圖的曲面圖 surfl 帶亮度的曲面圖 waterfall 無交叉線的網格圖 三維繪圖工具 axis 修正坐標軸屬性 clf 清除圖形窗口 clabel 放置等值線標簽 close 關閉圖形窗口 figure 創建或選擇圖形窗口 getframe 捕捉動畫楨 grid 放置網格 griddata 對畫圖用的數據進行內插 hidden 隱蔽網格圖線條 hold 保留當前圖形 meshgrid 產生三維繪圖數據 movie 放動畫 moviein 創建楨矩陣,存儲動畫 shading 在曲面圖和偽彩色圖中用分塊、平滑和插值加陰影 subplot 在圖形窗口內畫子圖 text 在指定的位置放文本 title 放置標題 view 改變圖形的視角 xlabel 放置x軸標記 ylabel 放置y軸標記 zlabel 放置z軸標記 函數view view(az,el) 設置視圖的方位角az和仰角el view([az,el]) view([x,y,z]) 在笛卡兒坐標系中沿向量[x,y,z]正視原點設置視圖,例如view([0 0 1])=view(0,90) view(2) 設置缺省的二維視圖,az=0,el=90 view(3) 設置缺省的三維視圖,az=-37.5,el=30 [az,el]=view 返回當前的方位角az和仰角el view(T) 用一個4×4的轉置矩陣T來設置視圖 T=view 返回當前的4×4轉置矩陣 plot3命令將繪制二維圖形的函數plot的特性擴展到三維空間圖形。函數格式除了包括第三維的信息(比如Z方向)之外,與二維函數plot相同。plot3一般語法調用格式是plot3(x,y,z,S),這里x,y和z是向量或矩陣,S是可選的字符串,用來指定顏色、標記符號和/或線形(s可以省略)。 三維螺旋線例子: t=0:pi/50:10*pi; plot3(sin(t),cos(t),t) grid %添加網格 plot3可畫出空間中的曲線: t=linspace(0,20*pi, 501); plot3(t.*sin(t), t.*cos(t), t); %注意用點乘 .* 亦可同時畫出兩條空間中的曲線: t=linspace(0, 10*pi, 501); plot3(t.*sin(t), t.*cos(t), t, t.*sin(t), t.*cos(t), -t); 正弦曲線圖 x=linspace(0,3*pi); % 0到 3pi 間100個數據點 z1=sin(x); z2=sin(2*x); z3=sin(3*x); y1=zeros(100); % 含有100個數據的 0數組 y3=zeros(100); y2=y3/2; plot3(x,y1,z1,x,y2,z2,x,y3,z3); 利用在x-y平面的矩形網格點上的z軸坐標值,MATLAB定義了一個網格曲面。MATLAB通過將鄰接的點用直線連接起來形成網狀曲面,其結果好象在數據點有結點的魚網。mesh可畫出立體網狀圖. 畫出由函數形成的立體網狀圖: x=linspace(-2, 2, 25); % 在x軸上取25點 y=linspace(-2, 2, 25); % 在y軸上取25點 [xx,yy]=meshgrid(x, y); % xx和yy都是21x21的矩陣 zz=xx.*exp(-xx.^2-yy.^2); % 計算函數值,zz也是21x21的矩陣 mesh(xx, yy, zz); % 畫出立體網狀圖 曲面圖,除了各線條之間的空檔(稱作補片)用顏色填充以外,和網格圖看起來是一樣的。這種圖一般使用函數surf來繪制。 surf和mesh的用法類似: x=linspace(-2, 2, 25); % 在x軸上取25點 y=linspace(-2, 2, 25); % 在y軸上取25點 [xx,yy]=meshgrid(x, y); % xx和yy都是21x21的矩陣 zz=xx.*exp(-xx.^2-yy.^2); % 計算函數值,zz也是21x21的矩陣 surf(xx, yy, zz); % 畫出立體曲面圖 MATLAB提供了一個peaks函數,可產生一個凹凸有致的曲面,包含了三個局部極大點及三個局部極小點,其方程式為: 要畫出此函數的最快方法即是直接鍵入peaks: 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) 我們亦可對peaks函數取點,再以各種不同方法進行繪圖。meshz可將曲面加上圍裙: [x,y,z]=peaks; meshz(x,y,z); waterfall可在x方向或y方向產生水流效果: [x,y,z]=peaks; waterfall(x,y,z); 下列命令產生在y方向的水流效果: [x,y,z]=peaks; waterfall(x ,y ,z ); meshc同時畫出網狀圖與等高線: [x,y,z]=peaks; meshc(x,y,z); surfc同時畫出曲面圖與等高線: [x,y,z]=peaks; surfc(x,y,z); contour3畫出曲面在三度空間中的等高線: contour3(peaks, 20); contour畫出曲面等高線在XY平面的投影: contour(peaks, 20); 剔透玲瓏球 [X0,Y0,Z0]=sphere(30); %產生單位球面的三維坐標 X=2*X0;Y=2*Y0;Z=2*Z0; %產生半徑為2的球面的三維坐標 surf(X0,Y0,Z0); %畫單位球面 shading interp %采用插補明暗處理 hold on; mesh(X,Y,Z);hold off %畫外球面 hidden off %產生透視效果 axis off %不顯示坐標軸 動態圖形動畫效果 彗星狀軌跡圖 【*例】簡單二維示例。(請指令窗中運行以下指令) n=10; t=n*pi*(0:0.0005:1); x=sin(t);y=cos(t); plot(x,y, g ); hold on;comet(x,y,0.02);hold off 【*例】衛星返回地球的運動軌線示意。 R0=1;%以地球半徑為一個單位 a=12*R0;b=9*R0;T0=2*pi; %T0是軌道周期 T=5*T0;dt=pi/100;t=[0:dt:T] ; f=sqrt(a^2-b^2);%地球與另一焦點的距離 th=12.5*pi/180;%衛星軌道與x-y平面的傾角 E=exp(-t/20);%軌道收縮率 x=E.*(a*cos(t)-f);y=E.*(b*cos(th)*sin(t));z=E.*(b*sin(th)*sin(t)); plot3(x,y,z, g )%畫全程軌線 [X,Y,Z]=sphere(30);X=R0*X;Y=R0*Y;Z=R0*Z;%獲得單位球坐標 grid on,hold on,surf(X,Y,Z),shading interp%畫地球 x1=-18*R0;x2=6*R0;y1=-12*R0;y2=12*R0;z1=-6*R0;z2=6*R0; axis([x1 x2 y1 y2 z1 z2])%確定坐標范圍 view([117 37]),comet3(x,y,z,0.02),hold off%設視角、畫運動軌線 圖 7.4.3.1-1 衛星返回地球軌線示意
總結
以上是生活随笔為你收集整理的matlab 图形绘制,MatLab图形绘制功能的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 有哪些适合幼儿园小朋友学英语的软件?3款
- 下一篇: matlab人脸追踪,求大神帮助我这个菜