Matlab入門基礎(chǔ)詳解
此文針對(duì)第一次接觸matlab的同學(xué),總結(jié)一些簡(jiǎn)單matlab應(yīng)用/語(yǔ)法,因?yàn)椴┲髦饕胢atlab打數(shù)學(xué)建模競(jìng)賽(剛接觸- -),所以所有matlab應(yīng)用主要針對(duì)競(jìng)賽。博主目前想從事算法、機(jī)器學(xué)習(xí)之類領(lǐng)域,因此深深意識(shí)到數(shù)學(xué)的重要性,因此參加2018美賽來(lái)督促自己學(xué)(競(jìng))習(xí)(保)數(shù)(加)學(xué)(分),希望能在提高自己的同時(shí),也可以為大家提供幫助~
第一章 Matlab中的數(shù)組操作
matlab中的運(yùn)算和操作是以數(shù)組為對(duì)象的,
數(shù)組又包括:數(shù)值數(shù)組、字符數(shù)組、元胞數(shù)組等。
數(shù)值數(shù)組:(1)n元數(shù)值向量(行向量與列向量)
(2)數(shù)值矩陣
(3)由數(shù)值矩陣構(gòu)成的元胞數(shù)組
幾個(gè)標(biāo)點(diǎn)符號(hào)的作用:
逗號(hào):用來(lái)分開(kāi)數(shù)組中的行元素。(可用空格代替)
分號(hào):用來(lái)將矩陣中的行分開(kāi)。(可用回車鍵代替)
冒號(hào):相當(dāng)于文字中的省略號(hào)。
中括號(hào):界定數(shù)組的首與尾。
一、數(shù)組的建立
1.直接輸入法
matlab在創(chuàng)立數(shù)組時(shí)以逗號(hào)或空格表示分列,分號(hào)或回車表示分行。數(shù)組開(kāi)頭“[”、結(jié)尾“]”
行數(shù)組:如a=[1,2,3,8,-1]
列數(shù)組: b=[1;2;3;8;-1] 或a’
矩陣:A= [2,4,1;8:-2:4;2,4,6]
2.通過(guò)數(shù)組編輯器生成矩陣
步驟:先建立空矩陣a=[], 然后在工作空間(workspace)中點(diǎn)開(kāi)a進(jìn)入數(shù) 組編輯器,輸入元素。
3.用函數(shù)創(chuàng)建數(shù)組
定步長(zhǎng)生成法: x=a:t:b (t步長(zhǎng),省略是為1);
定數(shù)線性采樣法: x=linspace(a,b,n),a與b是數(shù)組的第一個(gè)和最后一個(gè)元素,n是采樣的總點(diǎn)數(shù)。
4.元胞數(shù)組的創(chuàng)建
元胞數(shù)組是MATLAB的一種特殊數(shù)據(jù)類型,可以將元胞數(shù)組看做一種無(wú)所不包的通用矩陣,或者叫做廣義矩陣。
組成元胞數(shù)組的元素可以是任何一種數(shù)據(jù)類型的量,每一個(gè)元素也可以具有不同的尺寸,每一個(gè)元素的內(nèi)容也可以完
全不同,元胞數(shù)組的元素叫做元胞
建立元胞數(shù)組:{ }
a={'matlab',20;ones(2,3),1:10}
a =
'matlab' [ 20]
[2x3 double] [1x10 double]
二,數(shù)組的操作
注意 a(2,3), a([2,3]), a(1:3)的區(qū)別 -》 第一個(gè)是a矩陣第二行第三列的元素, 第二個(gè)是 矩陣第二個(gè)跟第三個(gè)元素組成的矩陣 第三個(gè)就是從1到3
1.元胞數(shù)組元素的提?。?div style="height:15px;">
()和 { }有著本質(zhì)的區(qū)別,
{ } 表示元胞的內(nèi)容,
()表示指定的元胞。
2.空數(shù)組的使用
B(1:2:5)=[]
刪除矩陣A第3行:
A(3,:)=[]
刪除矩陣A第2列:
A(:,2)=[]
3.常用數(shù)組函數(shù)
1> [m,n] = size(a); 獲取a數(shù)組的行數(shù)與列數(shù)
2> n = length(a); 獲取數(shù)組行數(shù)或者列數(shù)里最大的那一個(gè) %通常獲取一維數(shù)組的長(zhǎng)度
3> b=sort(x), [b,k]=sort(x) k是坐標(biāo)的向量
在Matlab中排序某個(gè)向量(一維)時(shí),可以使用sort(A),其中A為待排序的向量,如果僅是用來(lái)排序A,那么直接使用sort(A)即可, 如果排序后還需要保留原來(lái)的索引可以用返回值,即[B,ind]=sort(A),計(jì)算后,B是A排序后的向量,A保持不變,ind是B中每一項(xiàng)對(duì)應(yīng)于A 中項(xiàng)的索引。排序是按升序進(jìn)行的。由于在sort函數(shù)的結(jié)果中,是按升序排序的,要轉(zhuǎn)換成降序,先用X=eye(n)生成一個(gè)n維的單位陣,然后用X=rot90(X)將其旋轉(zhuǎn)為次對(duì)角線的單位陣,再用原來(lái)矩陣乘以X即可,如要講A逆序排列采用如下步驟:
X=eye(size(A));
X=rot90(X);
A=A*X;
假如a是一個(gè)2*n的矩陣,即兩行. b=a(1,:);
[c,pos]=sort(b);%pos為排序后的下標(biāo),c為第一行的排序結(jié)果;
a(2,:)=a(2,pos);%第二行按照第一行排序的下標(biāo)對(duì)應(yīng)
a(1,:)=c;%第一行結(jié)果重新賦給a 的第一行
以下適用于m*n的矩陣按第一行排序
[ b, pos ] = sort( a( 1, : ) );
a = a( :, pos );
4> reshape(x, 3, 5) 把數(shù)組x變成3行5列的矩陣
5> repmat(x,3,2) 數(shù)組的復(fù)制, 把數(shù)組復(fù)制3行,每行這個(gè)數(shù)組重復(fù)2次
6> sparse(a,b,c) 數(shù)組a,b,c的大小必須相同,數(shù)組a與b分別指定元素的行標(biāo)與列標(biāo),數(shù)組c指定元素的值
A=sparse([2,4,18],[3,12,20],[-5,-3,-8])
創(chuàng)建稀疏矩陣A,A的(2,3),(4,12),(18,20)元素分別為-5,-3,-8,其余元素為零,A為18×20階矩陣。
7> sum(A):矩陣A按列求和,返回一個(gè)行向量;
sum(A,2):矩陣A按行求和,返回一個(gè)列向量。
max(A):返回由矩陣各列的最大值構(gòu)成的向量。 max(max(A))用于求整個(gè)矩陣的最大值
max(A,B):返回A與B對(duì)應(yīng)元素最大值構(gòu)成的矩陣
min(A),min(A,B)類似
b2=max(A')' 返回由矩陣A各行的最大值構(gòu)成的列向量
8> diag命令
b=diag(A): 提取方陣A的對(duì)角線元素構(gòu)成列向量b
A=diag(b): 用一維數(shù)組b的元素生成對(duì)角方陣A
A=diag(b,k): b為一維數(shù)組,k為整數(shù)
將b元素作為偏離主對(duì)角線的第k條對(duì)角生成方陣A 其余都是0
9> find命令:
find(A) 找出A的不為0的元素的下標(biāo)
find(A,k) 找出A的前k個(gè)不為0的元素的下標(biāo)
find(A,k,’last’)找出A的后k個(gè)不為0的元素的下標(biāo)
find(g(A)),其中g(shù)(A)是數(shù)組A的邏輯表達(dá)式,
返回?cái)?shù)組A中滿足條件g(A)的元素下標(biāo)。
c1=find(B) [m,n]=find(B>=1&B<=3) 前者返回一個(gè)元素序號(hào)的向量 后者用一個(gè)2*x矩陣表示每個(gè)元素的二維坐標(biāo)
10> nchoosek 來(lái)實(shí)現(xiàn)二項(xiàng)式系數(shù)或所有組合
語(yǔ)法:
C = nchoosek(n,k)
C = nchoosek(v,k)
描述:
C = nchoosek(n,k) 其中n和k是非負(fù)整數(shù), 返回 n!/((n–k)! k!).
這是從n種情況中一次取出k種的組合的數(shù)量。
C = nchoosek(v,k), 其中v是一個(gè)長(zhǎng)度為n的行向量,創(chuàng)建一個(gè)矩陣,該矩陣的行由每次從v中的n個(gè)元素取出k個(gè)取值的所有可能組合構(gòu)成。矩陣 C 包含 n!/((n–k)! k!) 行和 k 列.
11> 求連乘積
c1=prod(4:6) 直接出答案
c2=cumprod(4:6) 把間接結(jié)果輸出
12> perms([2,1,8]) 求數(shù)組的全排列
13> zeros(m): m階全零方陣
zeros(m,n): m×n階全零方陣
eye(m): m階單位陣
ones(m): m階全1方陣
ones(m,n): m×n階全1方陣
一. matlab里和隨機(jī)數(shù)有關(guān)的函數(shù):
(1) rand:產(chǎn)生均值為0.5、幅度在0~1之間的偽隨機(jī)數(shù)
(2) randn:產(chǎn)生均值為0、方差為1的高斯白噪聲
(3) randperm(n):產(chǎn)生1到n的均勻分布隨機(jī)序列
(4) normrnd(a,b,c,d):產(chǎn)生均值為a、方差為b大小為cXd的隨機(jī)矩陣
rand
rand(n):生成0到1之間的n階隨機(jī)數(shù)方陣
rand(m,n):生成0到1之間的m×n的隨機(jī)數(shù)矩陣
randn
randn()命令是產(chǎn)生白噪聲的,白噪聲應(yīng)該是0均值,方差為1的一組數(shù),同rand有randn(n),randn(m,n)
rand是0-1的均勻分布,randn是均值為0方差為1的正態(tài)分布
二. 功能:生成服從正態(tài)分布的隨機(jī)數(shù)
R=normrnd(MU,SIGMA)
R=normrnd(MU,SIGMA,m)
R=normrnd(MU,SIGMA,m,n)
說(shuō)明:
R=normrnd(MU,SIGMA):生成服從正態(tài)分布(MU參數(shù)代表均值,DELTA參數(shù)代表標(biāo)準(zhǔn)差)的隨機(jī)數(shù)。輸入的向量或矩陣MU和SIGMA必須形式相同,輸出R也和它們形式相同。標(biāo)量輸入將被擴(kuò)展成和其它輸入具有 相同維數(shù)的矩陣。
R=norrmrnd(MU,SIGMA,m):生成服從正態(tài)分布(MU參數(shù)代表均值,DELTA參數(shù)代表標(biāo)準(zhǔn)差)的 隨機(jī)數(shù)矩陣,矩陣的形式由m定義。m是一個(gè)1×2向量,其中的兩個(gè)元素分別代表返回值R中行與列的維數(shù)。
R = normrnd(MU,SIGMA,m,n)
其中MU為均值,SIGMA為標(biāo)準(zhǔn)方差,m、n為矩陣大??;
三、求矩陣中所有元素的均值和方差
x是一個(gè)m*n的矩陣
均值:sum(x(:))/(m*n)
方差:var(x(:))
三、數(shù)組的運(yùn)算
注意下 不等于是 ~= 矩陣?yán)稂c(diǎn)乘點(diǎn)除跟直接乘除的區(qū)別
A+B,A-B,k*A
A.*B, A./B, A.^n
幾個(gè)例子~
B=A+(-2)*(A>4)+(A<0) 將A中大于4的元素減去2,小于0的元素加上1,其余元素不變構(gòu)成矩陣B。
B=A.*(mod(A,3)==0) 將A中能被3整除的元素保留其余元素變?yōu)榱銟?gòu)成矩陣B
數(shù)組集合的運(yùn)算
setdiff(a,b) (a與b的差集)
intersect(a,b) (a與b的交集)
union(a,b)(a與b的并集)
矩陣的基本函數(shù)
轉(zhuǎn)置A’
行列式 det(A),
特征值eig(A),
秩rank(A),
逆inv(A),
跡trace(A),
條件數(shù)cond(A)
某兩行/列進(jìn)行交換 a([n m],:)=a([m n],:),其中的mn就是你想交換的行。至于列交換:a(:,[m n])=a(:,[n m])。
求解方程組:
solve(s1,s2,…,sn,v1,v2,…,vn),即求表達(dá)式s1,s2,…,sn組成的方程組,求解變量分別v1,v2,…,vn。
具體例子如下:
x^2 + x*y + y = 3
x^2 - 4*x + 3 = 0
解法:
>> [x,y] = solve('x^2 + x*y + y = 3','x^2 - 4*x + 3 = 0')
運(yùn)行結(jié)果為
x =
1 3
y =
1 -3/2
即x等于1和3;y等于1和-1.5
或
>>[x,y] = solve('x^2 + x*y + y = 3','x^2 - 4*x + 3= 0','x','y')
x =
1 3
y =
1 -3/2
結(jié)果一樣,二元二方程都是4個(gè)實(shí)根。
對(duì)于矩陣的方程組要用到線代的知識(shí)了 比如
解方程組Ax = b (A是矩陣, b是向量
應(yīng)該是 x = inv(a)*b
第二章 Matlab程序設(shè)計(jì)
一、自定義函數(shù)
1. 匿名函數(shù)
格式:函數(shù)句柄 = @(自變量列表)函數(shù)表達(dá)式 //注意所有的乘除都用點(diǎn)乘 點(diǎn)除,因?yàn)樽兞客ǔS孟蛄總魅?div style="height:15px;">
例1:定義函數(shù)f(x) = x^2 + 3*x + 5,并計(jì)算f(x)在 x = -2, 1, 2.5, 3, 5.2的值
matlab代碼:
f = @(x) x.^2 + 3*x + 5 x=[-2,1,2.5,3,5.2] y1=f(x)y1 = 3.00 9.00 18.75 23.00 47.64
例2: 定義函數(shù)g(x, y) = sin(x^2 + 3y),并計(jì)算g(3,2)
matlab代碼:
g=@(x,y)sin(x.^2+3*y) y=g(3,2)y = 0.6503例3;(復(fù)合函數(shù))
定義符合函數(shù):z = u^2 * lnv, u = x/y, v = 3*x - 2*y并計(jì)算函數(shù)z在(x,y) = (2,1), (3,2), (4,1), (4,3)處的值
u = @(x, y) x ./ yv = @(x, y)3*x - 2*y;f = @(x, y)u(x, y) .^ 2 .* log(v(x, y)) x=[2,3,4,4] y=[1,2,1,3] z=f(x,y)z = 5.5452 3.6212 36.8414 3.1854
2. m-文件函數(shù)
在matlab界面上先點(diǎn)擊新建文件按鈕,進(jìn)入
窗口Editor-Untitled,按如下格式建立函數(shù)并保存。
格式:function [y1,y2]=ff(x1,x2)
……
y1=…
y2=…
輸入變量:x1,x2,輸出變量:y1,y2
注:輸入、輸出變量可以為1個(gè)或多個(gè)。
例:建立函數(shù)文件,實(shí)現(xiàn)對(duì)矩陣x的非零元素取倒數(shù),零元素不變,然后調(diào)用該函數(shù)。
(在窗口Editor-Untitled寫入)
function y=fun204(a)
y=spfun(@(x)1./x,a); (保存) 【spfun : matlab中對(duì)稀疏矩陣非零值進(jìn)行運(yùn)算的函數(shù)】
(在窗口Command-Window寫入)
a=[0,0,2;3,0,1;4,0,0]
b=fun204(a);
c=full(b)
c =
0 0 0.5000
0.3333 0 1.0000
0.2500 0 0
二、m-文件的建立(程序設(shè)計(jì))
編輯m-文件:
在窗口Editor-Untitled按要求編輯程序,
輸完程序后保存,在對(duì)話框中輸入文件名.
運(yùn)行m-文件:
在窗口Editor-Untitled單擊Debug →run,
或按F5鍵。
或在窗口Command-Window輸入文件名并回車。
三、 流程控制語(yǔ)句
每個(gè)語(yǔ)句(if,for, while)后面都要接一個(gè)end 表示語(yǔ)句結(jié)束
(一)分支結(jié)構(gòu)
if 表達(dá)式
執(zhí)行語(yǔ)句1
else
執(zhí)行語(yǔ)句2
end
2. switch 分值選擇語(yǔ)句
switch表達(dá)式
case 常量表達(dá)式1
語(yǔ)句塊1
case 常量表達(dá)式2
語(yǔ)句塊2
……
case 常量表達(dá)式n
語(yǔ)句塊n
otherwise
語(yǔ)句塊n+1
end
例子:
例2.5 自定義函數(shù),對(duì)數(shù)組x做如下處理:
記數(shù)組x所有元素和為s,
(1)若s除以5余數(shù)為1,
求出x中所有奇數(shù)的和。
(2)若s除以5余數(shù)為4,
求出x中所有偶數(shù)的和。
(3)其余情況求出x中
最大值與最小值的差。
代碼:
function [m,y]=ff(x)s=sum(x);m=mod(s,5);switch mcase 1 t=mod(x,2); y=sum(t.*x); //x是個(gè)向量,他會(huì)逐一把向量里數(shù)值進(jìn)行運(yùn)算case 4 t=1-mod(x,2); y=sum(t.*x);otherwise y=max(x)-min(x);end x=[2,-4,3,6,7,11]
[m,y]=ff205(x)
m = 0
y = 15
(二)循環(huán)結(jié)構(gòu)
1. for 循環(huán)語(yǔ)句
for 變量=數(shù)組
執(zhí)行語(yǔ)句1
……
執(zhí)行語(yǔ)句n
end
若數(shù)組為行向量,依次取數(shù)組元素執(zhí)行循環(huán)體。
若數(shù)組為矩陣,依次取矩陣的列執(zhí)行循環(huán)體。
例子:
數(shù)組x=(8,3,5,-1,6,10,7,2,9,11),求出其中所有除以5余1的元素之和以及所有除以5余4的元素之和.
代碼1: 用for執(zhí)行
x=[8,3,5,-1,6,10,7,2,9,11]; s1=0; s2=0; for m=x //這里是直接讓臨時(shí)變量m 等于 x數(shù)組里的每個(gè)元素的值 還可以 for i = 1:length(x) -> x(i) switch mod(m,5) case 1 s1=s1+m; case 4 s2=s2+m; end end s1,s2
代碼2: 直接find找出數(shù)組符合題意的數(shù)字
x=[8,3,5,-1,6,10,7,2,9,11]; i1=find(mod(x,5)==1); s1=sum(x(i1)) i2=find(mod(x,5)==4); s2=sum(x(i2))
2. while-end 循環(huán)語(yǔ)句
while表達(dá)式
執(zhí)行語(yǔ)句1
……
執(zhí)行語(yǔ)句n
end
注:表達(dá)式一般是由邏輯運(yùn)算和關(guān)系運(yùn)算組成的表達(dá)式,表達(dá)式的值非零繼續(xù)循環(huán),表達(dá)式值為0終止循環(huán)。
第三章 matlab圖形功能
一、二維圖形
1.plot函數(shù)
繪圖原理是描點(diǎn)法,給定圖形上的n個(gè)數(shù)據(jù)點(diǎn)的x坐標(biāo)與y坐標(biāo),將這n個(gè)點(diǎn)依次連接起來(lái)構(gòu)成折線。格式:plot(x,y) 或plot(x,y,S) 用字符串S設(shè)置曲線的顏色、線形和點(diǎn)的形狀。
控制方法:plot(x,y, ‘顏色 線型 點(diǎn)型’)
字符串S所設(shè)定的顏色、線形狀和點(diǎn)的形狀:
顏 色
線 型
點(diǎn) 型
r
紅色
—
實(shí)線
p
五角星
k
黑色
— —
虛線
h
六邊形
b
藍(lán)色
—.
點(diǎn)劃線
x
X形
g
綠色
:
點(diǎn)線
o
圓圈
y
黃色
*
*
m
洋紅
.
點(diǎn)
w
白色
d
菱形
例子:
作出y = sinx * cosx ^ 2的圖形
x=0:pi/20:2*pi;y=sin(x).*cos(x).^2;plot(x,y)figure(2) //下面圖形畫在第二個(gè)圖表的意思plot(x,y,'r--p')figure(3) //第三個(gè)圖表的意思plot(x,y,‘m:h’,‘linewidth’,2) %洋紅,點(diǎn)線,六邊形
2. subplot函數(shù)
格式:subplot(m,n,p) -> 將圖形窗口分成m×n個(gè)坐標(biāo)窗口, 并打開(kāi)第p個(gè)窗口供圖形操作。
例子:將圖形窗口,分成3個(gè)坐標(biāo)窗口,,分別繪制曲線
subplot(3,1,1) //寫在前面,代表操作表格 x=0:pi/20:2*pi; y=sin(x).*cos(x).^2; plot(x,y,'k-*') subplot(3,1,2) y=exp(x).*sin(x); plot(x,y,'b--o') subplot(3,1,3) x1=cos(x); y1=1/sqrt(2)*sin(x); plot(x1,y1,'m:p') axis equal //代表x 軸跟 y軸的刻度一樣 效果:
3.多重線(在同一個(gè)畫面上畫多條曲線)
例1 在一個(gè)畫面上畫出y=sin(x)與y=cos(x)的圖形
方法一:
x=0:pi/15:2*pi; y1=sin(x); y2=cos(x); plot(x,y1,‘b:*,x,y2,‘r-.p’)
方法二:
x=0:pi/15:2*pi;y1=sin(x);plot(x,y1, ‘b:*’)hold on //下面的圖形都跟上面圖形一樣y2=cos(x);plot(x,y2, ‘r:p’)hold off例2 : 在同一坐標(biāo)窗口繪制曲線族
y = sinx * cosx^n (n=1,2,3,4,5,6)
x=0:pi/40:2*pi; y=sin(x).*cos(x); plot(x,y,'linewidth',2.5) colors=['rkgmy']; hold on for k=1:5 y=y.*cos(x); plot(x,y,colors(k),'linewidth',2.5) end title('y=sin(x)*(cos(x))^n') %加標(biāo)題 legend('n=1','n=2','n=3','n=4','n=5','n=6') %加圖例
4.圖形的控制
grid命令%在圖形上加網(wǎng)格;
xlabel( ‘x軸’) %在x軸加標(biāo)記;
ylabel( ‘y軸’) %在y軸加標(biāo)記;
title ( ‘正弦、余弦曲線’) %給圖形加標(biāo)題;
text(x0,y0, ‘字符串’) %在圖上(x0,y0)處加上字符串;
gtext %用鼠標(biāo)控制在圖形上加字符串。
axis([xmin xmax ymin ymax]) % 確定x,y軸的范圍;
axis equal %設(shè)定x軸y軸單位相同;
axis square %設(shè)定圖框成方形;
axis off %清除坐標(biāo)刻度。
legend%加圖例
4.數(shù)學(xué)函數(shù)的簡(jiǎn)易作圖
它是一個(gè)易用的一元函數(shù)繪圖函數(shù) 。特別是在繪制含有符號(hào)變量的函數(shù)的圖像時(shí),ezplot要比
plot更方便。因?yàn)閜lot繪制圖形時(shí)要指定自變量的范圍,而ezplot無(wú)需數(shù)據(jù)準(zhǔn)備,直接繪出圖形。
ezplot函數(shù): 適用于繪制參數(shù)曲線和隱函數(shù)確定的曲線。調(diào)用格式為
(1)ezplot(@(x)fun,[a,b]) %繪制顯函數(shù)曲線
(2)ezplot(@(x,y)fun,[xmin,xmax,ymin,ymax])
%繪制隱函數(shù)曲線
(3)ezplot(@(x)fun1,@fun2)%繪制參數(shù)方程曲線
例子:
(1) y = cosx ^ 3 (2) x^4 + y^4 = 1 (3) x = t - sint ; y = t - cost; t 屬于 【-2pi, 4pi】;
ezplot(@(x)cos(x).^3)figure(2)ezplot(@(x,y)(x.^4+y.^4-1),[-1.2,1.2,-1.2,1.2])grid onfigure(3)ezplot(@(t)(t-sin(t)),@(t)(1-cos(t)),[-2*pi,4*pi])grid on //顯示表格
fplot函數(shù):
fplot(fun,[a,b],S) ,數(shù)值a,b界定繪圖區(qū)間,字符串S設(shè)定曲線顏色和線形 ,例子:fplot(@sin,[-pi/2,3*pi],'r--') ; y=inline('sin(x)');fplot(y,[-pi,pi]);
5. 極坐標(biāo)作圖
作圖函數(shù)polar(t,r) t為極角,r為極半徑。
二、三維圖形
(一)空間曲線作圖
空間曲線作圖命令:plot3(x,y,z,S)
其中x,y,z是同階向量(曲線上的點(diǎn)列坐標(biāo)),
S是字符串,用于設(shè)置曲線的顏色、線形和點(diǎn)。
例子:
做曲線圖:
x = sint * cost^2; y = cost * sint^2; z = t*(2*pi-t);
t=0:pi/50:2*pi; x=sin(t).*cos(t).^2; y=cos(t).*sin(t).^2; z=t.*(2*pi-t); plot3(x,y,z,‘r--*') grid on
(二)曲面作圖
原理:matlab的曲面作圖是對(duì)參數(shù)方程 設(shè)計(jì)的。
網(wǎng)格數(shù)據(jù)點(diǎn)的產(chǎn)生
用meshgrid命令
格式: meshgrid(x,y) t=-5:0.5:5; s=t; [S,T]=meshgrid(s,t); plot(S,T,'.')求出網(wǎng)格數(shù)據(jù)點(diǎn)(S,T)處 (X,Y,Z)的值
然后執(zhí)行命令: mesh(X,Y,Z)或surf(X,Y,Z)
meshc(X,Y,Z)或surfc(X,Y,Z)
分別為帶等高線的網(wǎng)格曲面和陰影曲面圖。
例1:作曲面z=f(x,y)的圖形 ,
clear,clc x=-7.5:0.5:7.5;y=x; //已知x,y范圍,所以把xy所在網(wǎng)格畫出來(lái) [X,Y]=meshgrid(x,y); R=sqrt(X.^2+Y.^2+1); Z=sin(R)./R; mesh(X,Y,Z) //畫出立體圖形 figure(2) surf(X,Y,Z)
效果圖:
畫拋物柱面 y=2*x^2的圖形
clc,clear x=-1:0.1:1; z=0:0.1:2; [X,Z]=meshgrid(x,z); //這里x跟z是已知的,因?yàn)闆](méi)有z,所以z就是負(fù)無(wú)窮到正無(wú)窮,這里截取一段,所以把xz畫出來(lái) Y=2*X.^2; surf(X,Y,Z) axis equal figure(2) surf(X,Y,Z) view(-37.5+180,30) axis equal例3.10 畫圓柱面 x^2 + y^2 =9的圖形// 通過(guò)sinx cosx來(lái)表達(dá)等式
clear,clct=0:pi/50:2*pi;s=0:0.1:4;[T,S]=meshgrid(t,s); x=3*cos(T); y=3*sin(T); z=S; mesh(x,y,z)
(三)等高線圖
1. contour命令:繪制曲面的等高線圖
用法:contour(z,v)或contour(x,y,z,v)
z是一個(gè)矩陣,由z=f(x,y)在一組點(diǎn)處的函數(shù)值給出。
若v是正整數(shù),給出需要畫的等高線的條數(shù)。
若v是向量,給出需要畫等高線的指定高度。
2. clabel命令:標(biāo)明等高線的高度值
3. contourf命令:繪制填充等高線圖
4. contour3命令:繪制立體等高線圖
例:畫出曲面z=sin(xy)的圖形和等高線圖
x=-2:0.05:2; y=x; [X,Y]=meshgrid(x,y); Z=sin(X.*Y); mesh(X,Y,Z) figure(2) v=[-0.8,-0.5,-0.3,0.2,0.5,0.8]; [C,h]=contour(Z,v); clabel(C,h) figure(3) [C,h]=contourf(Z,v); clabel(C,h) colormap cool %定義等高線的色圖 colorbar %定義等高線的色標(biāo)效果圖:
這一部分還有一些練習(xí)題,我還沒(méi)做完,最近先準(zhǔn)備期末考試