一、隱函數(shù)繪圖
- 如果給定了函數(shù)的顯式表達(dá)式,可以先設(shè)置自變量向量,然后根據(jù)表達(dá)式計算出函數(shù)向量,從而用
plot
、plot3
等函數(shù)繪制出圖形。 - 但如果函數(shù)用隱函數(shù)形式給出,則很難用上述方法繪制出圖形。對此,MATLAB 提供了一些函數(shù)用來繪制隱函數(shù)圖形。
1. 隱函數(shù)二維繪圖
- 隱函數(shù)二維繪圖采用
ezplot
函數(shù),它有各種變形,下面介紹常用的使用方法。 - (1) 對于函數(shù) y = f ( x ) y=f(x) y=f(x),ezplot 函數(shù)的調(diào)用格式如下。
- ①
ezplot(f)
:在默認(rèn)區(qū)間 ? 2 π < x < 2 π -2\pi<x< 2\pi ?2π<x<2π 繪制 y = f ( x ) y=f(x) y=f(x) 的圖形。其中, f f f 可以是函數(shù)文件名或函數(shù)表達(dá)式組成的字符串,也可以是一個匿名函數(shù)表達(dá)式或函數(shù)名。 - ②
ezplot(f,[a,b])
:在區(qū)間 a < x < b a<x<b a<x<b 繪制 y = f ( x ) y=f(x) y=f(x) 的圖形。 - (2) 對于隱函數(shù) f ( x , y ) = 0 f(x,y)=0 f(x,y)=0,ezplot 函數(shù)的調(diào)用格式如下。
- ①
ezplot(f)
:在默認(rèn)區(qū)間 ? 2 π < x < 2 π -2\pi<x< 2\pi ?2π<x<2π 和 ? 2 π < y < 2 π -2\pi<y< 2\pi ?2π<y<2π 繪制 f ( x , y ) = 0 f(x,y)=0 f(x,y)=0 的圖形。 - ②
ezplot(f,[a,b])
:在區(qū)間 a < x < b a<x<b a<x<b 和 a < y < b a<y<b a<y<b 繪制 f ( x , y ) = 0 f(x,y)=0 f(x,y)=0 的圖形。 - ③
eplot(f,[xmin,xmax.ymin,ymax])
:在區(qū)間 x m i n < r < x m a x xmin<r<xmax xmin<r<xmax 和 y m i n < y < y m a x ymin<y<ymax ymin<y<ymax 繪制 f ( x , y ) = 0 f(x,y)=0 f(x,y)=0 的圖形。 - (3) 對于參數(shù)方程 x = x ( t ) x=x(t) x=x(t) 和 y = y ( t ) y=y(t) y=y(t),ezplot 函數(shù)的調(diào)用格式如下。
- ①
eplot(x,y)
:在默認(rèn)區(qū)間 0 < x < 2 π 0<x<2\pi 0<x<2π 繪制 x = x ( t ) x =x(t) x=x(t) 和 y = y ( t ) y=y(t) y=y(t) 的圖形。 - ②
ezplot(x,y [tmin,tmax])
:在區(qū)間 t m i n t < t < t m a x tmint<t<tmax tmint<t<tmax 繪制 x = x ( t ) x=x(t) x=x(t) 和 y = y ( t ) y=y(t) y=y(t) 的圖形。 - 例如,我們進(jìn)行如下隱函數(shù)繪圖的練習(xí)。
- 程序如下:
subplot(2,2,1);
ezplot('x^2+y^2-9');
axis equal;
subplot(2,2,2);
ezplot(@(x,y) x^3+y^3-5*x*y+1/5);
subplot(2,2,3);
ezplot('cos(tan(pi*x))',[0,1]);
subplot(2,2,4) ;
ezplot('8*cos(t)','4*sqrt(2)*sin(t)',[0,2*pi]);
- 程序運(yùn)行結(jié)果如下圖所示。
3. 隱函數(shù)三維繪圖
- 隱函數(shù)三維繪圖函數(shù)有
ezcontour
、ezcontourf
、ezmesh
、ezmeshc
、ezplot3
、ezpolar
、ezsurf
、ezsurfe
,它們的調(diào)用格式基本相同,需要時查閱幫助信息即可。 - 下面,我們以
ezsurf
函數(shù)為例介紹常用的使用方法。ezsurf
函數(shù)調(diào)用的是surf
函數(shù)的功能,其調(diào)用格式如下。 - (1)
ezsurf(f)
:繪制曲面 z = f ( x , y ) z=f(x,y) z=f(x,y),其中 f f f 的表示方法與 ezplot 函數(shù)相同。 x 、 y x、y x、y 取默認(rèn)范圍 ? 2 π < x < 2 π -2π<x<2π ?2π<x<2π, ? 2 π < y < 2 π -2π<y<2π ?2π<y<2π。 - (2)
ezsurf(f,[xmin,xmax,ymin,ymax])
或ezsurf(f[min,max])
:在指定的區(qū)間繪制曲面 z = f ( x , y ) z=f(x,y) z=f(x,y)。 - (3)
ezsuf(x,y,z)
:在默認(rèn)區(qū)域 ? 2 π < s < 2 π -2π<s<2π ?2π<s<2π, ? 2 π < t < 2 π -2π<t<2π ?2π<t<2π 上繪制參數(shù)方程 x = x ( s , t ) x=x(s,t) x=x(s,t), y = y ( s , t ) y=y(s,t) y=y(s,t), z = z ( s , t ) z=z(s,t) z=z(s,t) 的曲面。 - (4)
ezsurf(x,y,z,[smin,smax,tmin,tmax])
或ezsurf(x,y,[min,max])
:使用指定的區(qū)域繪制參數(shù)方程曲面。 - 例如,我們繪制下列曲面: { x = e ? s cos ? t y = e ? s sin ? t z = t , 0 ≤ s ≤ 8 , 0 ≤ t ≤ 5 π \left\{\begin{matrix}x=e^{-s}\cos t \\y=e^{-s}\sin t \\z=t \end{matrix}\right.\begin{matrix},0\le s\le 8,0\le t\le 5\pi \end{matrix} ? ? ??x=e?scosty=e?ssintz=t?,0≤s≤8,0≤t≤5π?
- 程序如下:
>> ezsurf('exp(-s)*cos(t)','exp(-s)*sin(t)','t',[0,8,0,5*pi])
- 程序運(yùn)行結(jié)果如下圖所示。
二、圖形修飾處理
- 圖形修飾處理可以通過渲染和烘托的表現(xiàn)手法,使得圖形現(xiàn)實(shí)感更強(qiáng),傳遞的信息更豐富。圖形修飾處理包括視點(diǎn)處理、色彩處理和裁剪處理等方法。
1. 視點(diǎn)處理
- 從不同的視點(diǎn)觀察物體,所看到的物體形狀是不一樣的。 同樣,從不同視點(diǎn)繪制的圖形其形狀也是不一樣的。視點(diǎn)位置可由方位角和仰角表示。
- 方位角又稱為旋轉(zhuǎn)角,它是視點(diǎn)與原點(diǎn)連線在 x y xy xy 平面上的投影與 y y y 軸負(fù)方向形成的角度,正值表示逆時針,負(fù)值表示順時針。
- 仰角又稱為視角,它是視點(diǎn)與原點(diǎn)連線與 x y xy xy 平面的夾角,正值表示視點(diǎn)在 x y xy xy 平面上方,負(fù)值表示視點(diǎn)在 x y xy xy平面下方。例如,在下圖中展示了坐標(biāo)系中視點(diǎn)的定義,圖中箭頭方向表示正的方向。
- MATLAB 提供了設(shè)置視點(diǎn)的函數(shù)
view
,其調(diào)用格式如下:
view(az,el)
- 其中,az 為方位角,el 為仰角,他們均以度為單位。系統(tǒng)默認(rèn)的的視點(diǎn)定義為方位角 -37.5°,仰角 30°。
- 例如,我們從不同視點(diǎn)繪制多峰函數(shù)曲面。
- 程序如下:
subplot(2,2,1);
mesh(peaks);
view(-37.5,30); %指定子圖1的視點(diǎn)
title('azimuth=-37.5,elevation=30');
subplot (2,2,2);
mesh(peaks);
view(0,90); %指定子圖2的視點(diǎn).
title('azimuth=0,elevation=90');
subplot(2,2,3);
mesh(peaks);
view(90,0); %指定子圖3的視點(diǎn)
title('azimuth=90,elevation=0');
subplot(2,2,4);
mesh(peaks);
view(-7,-10); %指定子圖4的視點(diǎn)
title('azimuth=-7,elevation=-10');
- 程序運(yùn)行結(jié)果如下圖所示。
2. 色彩處理
2.1 顏色的向量表示
- MATLAB 除用字符表示顏色外,還可以用含有 3 個元素的向量表示顏色。向量元素在 [0,1] 范圍取值,3 個元素分別表示紅、綠、藍(lán) 3 種顏色的相對亮度,稱為 RGB 三元組。在下表中,我們列出了幾種常見顏色的 RGB 值。
RGB 值 | 顏色 | 字符 | RGB 值 | 顏色 | 字符 |
---|---|---|---|---|---|
[0 0 1] | 藍(lán)色 | b | [1 1 1] | 白色 | w |
[0 1 0] | 綠色 | g | [0.5 0.5 0.5] | 灰色 | |
[1 0 0] | 紅色 | r | [0.67 0 1] | 紫色 | |
[0 1 1] | 青色 | c | [1 0.5 0] | 橙色 | |
[1 0 1] | 品紅色 | m | [1 0.62 0.40] | 銅色 | |
[1 1 0] | 黃色 | y | [0.49 1 0.83] | 寶石藍(lán) | |
[0 0 0] | 黑色 | k |
2.2 色圖
- 色圖(Color Map)是 MATLAB 系統(tǒng)引入的概念。在 MATLAB 中,每個圖形窗口只能有一個色圖。色圖是 m × 3 m×3 m×3 的數(shù)值矩陣,它的一行是 RGB 三元組。
- 色圖矩陣可以人為地生成,也可以調(diào)用 MATLAB 提供的函數(shù)來定義色圖矩陣。下表中我們列出了定義色圖矩陣的函數(shù),色圖矩陣的維數(shù)由函數(shù)調(diào)用格式?jīng)Q定。例如:
M=hot;
- 生成 64 × 3 64×3 64×3 色圖矩陣 M M M,表示的顏色是從黑色、紅色、黃色到白色的由濃轉(zhuǎn)淡的顏色。又如:
P=gray(100);
- 生成 100 × 3 100×3 100×3 色圖矩陣 P P P,表示的顏色是灰色由濃到淡。
函數(shù)名 | 含義 | 函數(shù)名 | 含義 |
---|---|---|---|
autumn | 紅、黃濃淡色 | jet | 藍(lán)頭紅尾飽和值色 |
bone | 藍(lán)色調(diào)濃淡色 | lines | 采用 plot 繪線色 |
colorcube | 三濃淡多彩交錯色 | pink | 淡粉紅色圖 |
cool | 青、品紅濃淡色 | prism | 光譜交錯色 |
copper | 純銅色調(diào)線性濃淡色 | spring | 青、黃濃淡色 |
flag | 紅-白-藍(lán)-黑交錯色 | summer | 綠、黃濃淡色 |
gray | 灰色調(diào)線性濃淡色 | winter藍(lán)、綠濃淡色 | |
hot | 黑、紅、黃、白濃淡色 | white | 全白色 |
hsv | 兩端為紅的飽和值色 |
- 除
plot
及其派生函數(shù)外,mesh
、surf
等函數(shù)均使用色圖著色。圖形窗口色圖的設(shè)置和改變,使用colormap
函數(shù),其調(diào)用格式如下:
colormap(M)
- 其中 M M M 代表色圖矩陣。
2.3 三維曲面圖形的著色
- 三維曲面圖形實(shí)際上就是在網(wǎng)格圖的每一個網(wǎng)格片上涂上顏色。
surf
函數(shù)用默認(rèn)的著色方式對網(wǎng)格片著色。除此之外,還可以用shading
命令來改變著色方式,格式如下。 - (1)
shading faceted
:將每個網(wǎng)格片用其高度對應(yīng)的顏色進(jìn)行著色,但網(wǎng)格線仍保留,其顏色是黑色。這是系統(tǒng)默認(rèn)的著色方式。 - (2)
shading flat
:將每個網(wǎng)格片用同一個顏色進(jìn)行著色,且網(wǎng)格線也用相應(yīng)的顏色,從而使得圖形表面顯得更加光滑。 - (3)
shading interp
:在網(wǎng)格片內(nèi)采用顏色插值處理,得出的表面圖顯得最光滑。 - 例如,我們采用不同著色方式的效果展示。
- 程序如下:
t=0:pi/20:2*pi;
z=peaks(20);
colormap(jet);
subplot(2,2,1);
surf(z);
subplot(2,2,2);
surf(z);
shading flat;
subplot(2,2,3);
surf(z);
shading interp;
subplot(2,2,4);
mesh(z);
shading interp;
- 程序運(yùn)行結(jié)果如下圖所示。
3. 圖形的裁剪處理
- MATLAB 定義的 NaN 常數(shù)可以用于表示那些不可使用的數(shù)據(jù),利用這種特性,可以將圖形中需要裁剪部分對應(yīng)的函數(shù)值設(shè)置成 NaN,這樣在繪制圖形時,函數(shù)值為 NaN 的部分將不顯示出來,從而達(dá)到對圖形進(jìn)行裁剪的目的。
- 例如,我們要削掉正弦波頂部或底部大于 0.5 的部分,可使用下面的程序:
x=0:pi/10:4*pi;
y=sin(x);
i=find(abs(y)>0.5);
x(i)=NaN;
plot(x,y);
- 例如,我們繪制兩個球面,其中一個球在另一個球里面,將外面的球裁掉一部分,使得能看見里面的球。
- 程序如下:
[x,y,z]=sphere(20); %生成外面的大球
z1=z;
z1(:,1:4)=NaN;
%將大球裁掉一部分
c1=ones(size(z1));
surf(3*x,3*y, 3*z1,c1);
%生成里面的小球
hold on;
z2=z;
c2=2*ones(size(z2));
c2(:,1:4)=3*ones(size(c2(:,1:4)));
surf(1.5*x,1.5*y,1.5*z2,c2);
- 程序運(yùn)行結(jié)果如下圖所示。色圖中使用 3 種顏色,外面的球是藍(lán)色,里面的球采用深淺不同的兩種顏色。
文章來源:http://www.zghlxwxcb.cn/news/detail-467293.html
三、圖像處理與動畫制作
- 圖像處理與動畫制作可以看作繪圖功能的進(jìn)一步拓展,也是 MATLAB 的一個具體應(yīng)用領(lǐng)域。在進(jìn)行 MATLAB 基礎(chǔ)學(xué)習(xí)時,了解一些圖像處理與動畫制作方法,對日后的使用會產(chǎn)生一定的幫助。
1. 圖像處理
- MATLAB 基本系統(tǒng)提供了幾個用于簡單圖像處理的函數(shù),利用這些函數(shù)可以進(jìn)行圖像的讀/寫和顯示。此外,MATLAB 還有一個功能更強(qiáng)的圖像處理工具箱,可以對圖像進(jìn)行更專業(yè)的處理。
1.1 圖像的讀/寫
- 要在 MATLAB 中使用不同格式的圖像,需要用
imread
函數(shù)讀取該圖像,即將圖像文件讀入 MATLAB 工作空間。imread
函數(shù)的調(diào)用格式與功能如下。 - (1)
x=imread(ilename,fmt)
:其中 filename 是圖像的文件名,fmt 指定圖像文件的格式。MATLAB 支持多種圖像文件格式,如 bmp、jpg、 jpeg、 tif 等。 - 當(dāng)我們省略 fmt 參數(shù)時,通過文件的內(nèi)容自動判斷其格式。矩陣 x x x 是從圖像文件中讀出并轉(zhuǎn)化成 MATLAB 可識別的圖像格式的數(shù)據(jù)。
- MATLAB 中,圖像通常由數(shù)據(jù)矩陣和色彩矩陣組成。如果該圖像是灰度圖像,那么 x x x 是二維的。如果圖像是真彩色的,那么 x x x 是三維矩陣,第三維存儲顏色數(shù)據(jù)。
- (2)
[x,map]-imread(filename,fimt)
: 把經(jīng)過轉(zhuǎn)化的圖像數(shù)據(jù)保存到矩陣 x x x 中,同時把相關(guān)的色圖數(shù)據(jù)讀到矩陣 map 中。 - 在 MATLAB 中,
imwrite
函數(shù)用于將圖像數(shù)據(jù)和色圖數(shù)據(jù)一起寫入圖像文件,其調(diào)用格式如下:
imwrite(x,filename,fmt)
- 該函數(shù)把圖像數(shù)據(jù) x x x 輸出到文件 filename,圖像的類型由 fmt 指定。
1.2 圖像的顯示
- MATLAB 用
image
的函數(shù)顯示圖像,具調(diào)用格式如下:
image (x)
- 其中 x x x 為圖形的數(shù)據(jù)矩陣。
- 與
image
函數(shù)類似的函數(shù)是imagesc
,它的調(diào)用格式和功能都與image
函數(shù)一樣,只是圖像著色方式不同。 - 為了保證圖像的顯示效果,一般還應(yīng)使用
colormap
函數(shù)設(shè)置圖像色圖。 - 設(shè)有圖像文件 logo.jpg,在圖形窗口顯示該圖像,程序如下:
[x,cmap]=imread('logo.jpg'); %讀取圖像的數(shù)據(jù)陣和色圖陣
image(x);
colormap(cmap);
axis image off %保持寬高比并取消坐標(biāo)軸
2. 動畫制作
- MATLAB 具有動畫制作能力,它可以存儲一系列各種類型的二維或三維圖,然后像放電影一樣把它們按次序播放出來,稱為逐幀動畫。例如,取出一幅三維圖形,然后緩慢地將它旋轉(zhuǎn),這樣就可以從不同角度來觀察它。另一種類型是描繪質(zhì)點(diǎn)運(yùn)動軌跡的動畫,稱為軌跡動畫。
2.1 制作逐幀動畫
- MATLAB提供了
getframe
、moviein
和movie
函數(shù)進(jìn)行逐幀動畫制作。函數(shù)的功能分別如下。 - (1)
getframe
函數(shù):可截取一幅畫面信息(稱為動畫中的一幀),一幅畫面信息形成一個很大的列向量。顯然,保存 n n n 幅圖面就需要一個大矩陣。 - (2)
moviein(n)
函數(shù):用來建立一個足夠大的 n n n 列矩陣。該矩陣用來保存 n n n 幅畫面的數(shù)據(jù),以備播放。之所以要事先建立一個大矩陣,是為了提高程序運(yùn)行速度。 - (3)
movie(m,n)
函數(shù):播放由矩陣 m m m 所定義的畫面 n n n 次,默認(rèn)播放一次。 - 例如,我們播放一個直徑不斷變化的球體。
[x,y,z]=sphere(50);
m=moviein(30); %建立一個30列大矩陣
for i=1:30
surf(i*x,i*y,i*z); %繪制球面
m(:,i)=getframe; %將球面保存到m矩陣
end
movie(m,10); %以每秒10幅的速度播放球面
2.2 創(chuàng)建軌跡動畫
- MATLAB 提供了
comet
和comet3
函數(shù)展現(xiàn)質(zhì)點(diǎn)在二維平面和三維空間的運(yùn)動軌跡,這種軌跡曲線稱為彗星軌跡曲線。函數(shù)調(diào)用格式如下:
comet(x,y,p)
comet3(x,y,z,p)
- 其中,每一組
x
、
y
、
z
x、y、z
x、y、z 組成一組曲線的坐標(biāo)參數(shù),用法與
plot
和plot3
函數(shù)相同。 p p p 是用于設(shè)置彗星長度的參數(shù),默認(rèn)值是 0.1。在二維圖形中,彗長為 y y y 向量長度的 p p p 倍。在三維圖形中,彗長為 z z z 向量長度的 p p p 倍。 - 例如,我們生成一個三維運(yùn)動圖形軌跡。
x=0:pi/250:10*pi;
y=sin(x);
z=cos(x);
comet3(x,y,z);
- 運(yùn)行程序后,動畫中的一個畫面如下圖所示。圖中的小圓圈代表彗星頭部,它跟蹤屏幕上的數(shù)據(jù)點(diǎn),彗星軌跡為小圓圈后面的曲線,曲線的變化過程動態(tài)地展示了質(zhì)點(diǎn)的運(yùn)動軌跡。
四、交互式繪圖工具
- MATLAB 提供了多種用于繪圖的函數(shù),這些函數(shù)可以在命令行窗口中或在程序中調(diào)用。此外,MATLAB 還提供了交互式繪圖工具。
1. 繪圖選項卡
- 在MATLAB的功能區(qū)有一個繪圖選項卡,提供了繪圖的基本工具。
- 繪圖選項卡的工具條中有 3 個命令組,左邊的所選內(nèi)容命令組用于顯示已選中用于繪圖的變量;中間的繪圖命令組提供了繪制各種圖形的命令;右邊的選項命令組用于設(shè)置繪圖時是否新建圖形窗口。
- 如果未選中任何變量,繪圖命令組的命令是不可用的。如果在工作區(qū)中選擇了變量,繪圖命令組中會自動根據(jù)所選變量類型提供相應(yīng)繪圖命令,此時,單擊某個繪圖命令按鈕,則會在命令行窗口自動輸入該命令(命令以選中的變量為參數(shù))并執(zhí)行,在圖形窗口繪制圖形。
- 例如,用繪圖選項卡中的工具繪制正弦曲線,先在命令行窗口建立 x x x 和 y y y,再在工作區(qū)窗口選中 x 、 y x、y x、y,并在繪圖選項卡中單擊 plot 按鈕,則命令行窗口中出現(xiàn) plot(x,y)命令,然后彈出圖形窗口并繪制正弦曲線。
2. 繪圖工具
- 繪制圖形時,如果需要修改繪圖參數(shù),我們可以利用 MATLAB 圖形窗口的繪圖工具(Plot Tools)。
- 在圖形窗口的快捷工具欄中單擊最右側(cè)的顯示繪圖工具和??繄D形按鈕,或在 MATLAB 的命令行窗口中輸入命令 plottools 啟動繪圖工具。
文章來源地址http://www.zghlxwxcb.cn/news/detail-467293.html
- 繪圖工具由 3 個部分組成,圖像編輯區(qū)的左側(cè)為圖形選項板,右側(cè)為繪圖瀏覽器,下部為屬性編輯器。
2.1 圖形選項板
- 圖形選項板用于在圖形窗口中添加和排列子圖,觀察和選擇繪圖數(shù)據(jù)以及添加圖形標(biāo)注。要打開圖形選項板,可以在命令行窗口輸入以下命令:
>> figurepalette
- 圖形選項板包含 3 個面板,其作用如下。
- (1) 新子圖面板:用于添加二維、三維子圖。例如,若要將圖形窗口分割成 2 × 2 2×2 2×2 的 4 個用于繪制二維圖形的子圖,則單擊二維坐標(biāo)軸選項右邊的展開按鈕,然后單擊第 2 行第 2 列方格。
- (2) 變量面板:用于瀏覽和選擇繪圖數(shù)據(jù)。若雙擊某變量,則直接以該變量為參數(shù)調(diào)用
plot
函數(shù)繪圖。若在選中的變量上右擊,則可以從彈出的快捷菜單中選擇一種繪圖函數(shù)繪制圖形。 - (3) 注釋面板:用于為圖形添加標(biāo)注。從面板中選擇一種標(biāo)注工具, 可以在圖形窗口中繪制出用于標(biāo)注的圖形,如直線、箭頭、標(biāo)注文本框等。
2.2 繪圖瀏覽器
- 繪圖瀏覽器以圖例的方式列出了圖形中的元素。在繪圖瀏覽器中選中一個對象,圖形窗口中該對象上出現(xiàn)黑色標(biāo)記,屬性編輯器展現(xiàn)該對象的屬性。
2.3 屬性編輯器
- 屬性編輯器用于觀測和設(shè)置所選對象的名稱、顏色、填充方法等參數(shù)。對象類型不同,屬性編輯器中的內(nèi)容也不同。
到了這里,關(guān)于MATLAB 之 隱函數(shù)繪圖、圖形修飾處理、圖像處理與動畫制作和交互式繪圖工具的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!