久久99精品久久久久久琪琪,久久人人爽人人爽人人片亞洲,熟妇人妻无码中文字幕,亚洲精品无码久久久久久久

MatLab 知識小結

時間:2019-05-12 12:57:11下載本文作者:會員上傳
簡介:寫寫幫文庫小編為你整理了多篇相關的《MatLab 知識小結》,但愿對你工作學習有幫助,當然你在寫寫幫文庫還可以找到更多《MatLab 知識小結》。

第一篇:MatLab 知識小結

MatLab 知識小結

matlab常用到的永久變量。ans:計算結果的默認變量名。i j:基本虛數單位。

eps:系統的浮點(F10a9Bg個oht): inf: 無限大,例1/0 nan NaN:非數值(N航a nmnb謝)pi:圓周率n(n=3.1415926..)。realmax:系統所能表示的最大數值。realmin: 系統所能表示的最小數值,nargin: 函數的輸入參數個數: nargout:函數的輸出多數個數

①matlab的所有運算都定義在復數城上。對于方根問題運算只返回處于第一象限的解。

⑦matlab分別用左斜/和右來表示“左除和“右除”運算。對于標量運算而言,這兩者的作用沒有區別:但對于矩陣運算來說,二者將產生不同的結果。

多項式的表示方法和運算

p(x)=x^3-3x-5 可以表示為p=[1 0 –3 5],求x=5時的值用plotval(p,5)也可以求向量:a=[3 4 5],plotval(p,a)函數roots求多項式的根 roots(p)p=[1 0-3 5];r=roots(p)由根重組多項式poly(根)q=poly(r)

real(q)有時會產生虛根,這時用real抽取實根即可

conv(a,b)函數 多項式乘法(執行兩個數組的卷積)a=[1 2 3 4];b=[1 4 9 16];c=conv(a,b)多項式的加減法,低階的多項式必須用首零填補,使其與高階多項式有同樣的階次

多項式除法 [q , r]=deconv(c , b)表示b/c q為商多項式,r為余數 多項式的導數 polyder(f)f=[ 2 4 5 6 2 1];s=polyder(f)

多項式的曲線擬合

x=[1 2 3 4 5];

y=[5.6 40 150 250 498.9];

p=polyfit(x,y,n)數據的n次多項式擬合 poly:矩陣的特征多項式、根集對應的多項式

x2=1:0.1:5;n取1時,即為最小二乘法

y2=polyval(p,x2);計算多項式的值(polyvalm計算矩陣多項式)plot(x,y,'*',x2,y2);grid on 最小二乘法 x=[1 2 3 4 5];

y=[5.6 40 150 250 498.9];plot(x,y,’*’),lsline

多項式插值(p158)

YI=interp1(x,y,XI,’method’)一維插值

(XI為插值點的自變量坐標向量,可以為數組或單個數。

method為選擇插值算法的方法,包括:

linear(線性插值)cubic(立方插值)spline(三次樣條插值)nearst(最近臨插值)

例如:人口預測 year=1900:10:1900;

number=[78 91 105 ?.每十年的人口數];

x=1900:1:2000;

y=interp1(year,number,x,’spline’);plot(year,numeber,’*’,x,y);grid on

一維博里葉變換插值使用函數interpft實現,計算含有周期函數值的矢量的傅里葉變換

然后使用更多的點進行傅里葉變換的逆變換,函數的使用格式如下:y=interpft(x,n)其中x是含有周期函數值的矢量,并為等距的點,n為返同等間距點的個數。

求解一元函數的最小值

y=fminbnd('humps',0.3,1)humps為一內置函數

求解多元函數的最小值

函數fminserch用于求多元函數的最小值。它可以指定一個開始的矢量,并非指定一個區間。此函數返回一個矢量為此多元函數局部最小函數值對應的自變量

紋理成圖功能

由warp函數的紋理成圖功能實現平面圖像在空間三維曲面上的顯示。將文件名為flowers.tif的圖像分別投影到圓柱形和球星表面上 i=imread('flowers.tif');[x,y,z]=cylinder;

subplot(1,2,1),warp(x,y,z,i);[x,y,z]=sphere(50);subplot(1,2,2),warp(x,y,z,i);warp(x,y,z,i);

求函數的零點

求函數humps在[1,2]區間上的零點 fzero(‘humps’,[1,2]);

也可以給一個初始值 fzero(‘humps’,0.9);

對于多項式可直接由roots求其根 roots(‘4*x^3+……’);也可以用solve c=sym('c','real');x=sym('x','real');s=solve(x^3-x+c)

函數定積分

q=quadl(‘humps’,0,1)求humps函數在0 1區間上的定積分,也可以用quad語句

二重積分 首先計算內積分,然后借助內積分的中間結果再求出二重積分的值,類似于積分中的分步積分法。Result=dblquad(‘integrnd’,xin,xmax.,ymin,ymax)integrnd為被積函數的名稱字符串

符號積分運算int(f)最精確的是符號積分法 計算s=∫12[∫01xydx]dy syms x y 中間為空格,不能為逗號 s=int(int(‘x^y’,’x’,0,1),’y’,1,2)引號可省略 vpa(s)顯示s的值 內積分限為函數的二重積分 I=∫14[∫√y2(x2+y2)dx]dy 符號法I=vpa(int(int(‘x^2+y^2’,’x’,sqrt(y),2),’y’,1,4)

微分運算(diff)

微分是描述一個函數在一點處的斜率,是函數的微觀性質、因此積分對函數的形狀在小范圍內的改變不敏感,而微分很敏感。—個函數的小的變化,容易產生相鄰點的斜率的大的改變。由干微分這個固有的困難.所以盡可能避免數值微分.特別是對實驗獲得的數據進行微分。在這種情況,最好用最小二乘曲線擬合這種數據,然后對所得到的多項式進行微分;或用另一種方法對點數據進行三次樣條擬合,然后尋找樣條微分,但是,有時微分運算是不能避免的,在MATLAB中.用函數diff汁算一個矢量或者矩陣的微分(也可以理解為差分)。a=[1 2 3 3 3 7 8 9];b=diff(a)一次微分 bb=diff(a,2)二次微分 實際上diff(a)=[a(2)-a(1),a(3)-a(2),??,a(n)-a(n-1)] 對于求矩陣的微分,即為求各列矢量的微分,從矢量的微分值可以判斷矢量的單調性、是否等間距以及是否有重復的元素。符號微分運算(diff)syms x t a f =cos(a*x)df =diff(f)由findsym的規則,隱式的指定對x進行微分

dfa=diff(f,'a')指定對變量a進行微分 dfa=diff(f,'a',3)三次微分

diff函數不僅作用在標量上,還可以在矩陣上,運算規則就是按矩陣的元素分別進行微分 syms a x A=[cos(a*x),sin(a*x),-sin(a*x),cos(a*x)];dA=diff(A)微分方程dsolve

在matlab中,符號表達式中包含字母D用來表示微分運算,D2,D3分別對應第二,第三階導數,D2y表示d2y/dt2 把t缺省了

y=dsolve(‘Dy=f(y)’)單個方程,單個輸出

[u,v]=dsolve(‘Du=f(u,v)’,’Dv=g(u,v)’)2個方程,2個輸出

s=dsolve(‘Dx=f(x,y,z)’,’Dy=g(x,y,z)’,’Dz=k(x,y,z)’)

s.x s.y s.z 3個方程,架構數組

dsolve('Dx=-a*x')結果:C1*exp(-a*t)沒給定初值,所以結果中含參變量 x=dsolve('Dx=-a*x','x(0)=1','s')結果exp(-a*s)給定了初值,獨立變量設為s

計算多元函數的梯度

fx=gradient(f)f是一個矢量返回f的一維數值梯度,fx對應于x方向的微分。

[x,y]=meshgrid(-2:.2:2,-2:.2:2);z=x.*exp(-x.^2-y.^2);[px,py]=gradient(z,.2,.2);contour(z),hold on 畫等值線 quiver(px,py)

matlab字符串運算 利用sym命令創建表達式

f=sym(‘cos(x)+sin(x)’)或 syms x , f=cos(x)+sin(x)diff(f)求其導數(也

f=diff(‘cos(x)+cos(y)’)

當字符表達式中含有多于一個的變量時,只有—個變量是獨立變量。如果不告訴matlab哪一個變量是獨立變量,則可以通過findsym命令詢問 利用findsym命令查詢獨立變量 f=sym('sin(a*x)+b')

findsym(f,1)給出獨立變量(一個變量,如果為2則給出2個變量)findsym(f)給出所有變量

符號表達式的化簡和替換

collect函數 collect(f,v)表示將f表示為關于符號變量v的多項式形式,即關于v合并同類項,v缺省,則用findsym確定的缺省變量 syms x y

f=x^2*y+y*x-x^2-2*x+1 collect(f)得到(-1+y)*x^2+(y-2)*x+1 collect(f,y)

(x+x^2)*y+1-x^2-2*x

expand函數 expand(f)將f展開,寫成和的形式 syms x

expand((x-1)^3)得

x^3-3*x^2+3*x-1

horner函數 horner(f)將f寫成鑲嵌套形式 syms x

horner(x^3-6*x^2)得

(-6+x)*x^2

factor函數 factor(f)將f轉換成低階有理多項式的乘積 syms x

f=x^3-6*x^2+11*x-6

factor(f)得到(x-1)*(x-2)*(x-3)simplify(f)函數 綜合化簡 simple(f)函數的最簡形式 syms x

f=2*sin(x^2)+cos(3*x)

simple(f)如果不想看到中間過程,可z=simple(f)有時使用兩次simple命令可以得到最簡式

如果想知道哪個簡化命令得到最后結果,可以加一個參數how [z,how]=simple(f)

符號表達式的替換 subs(f,new,old)f='a*x^2+b*x+c'

subs(f,'t','x')得到a*(t)^2+b*(t)+c subs是一個符號函數,返回一個符號變量

subexpr函數 有時matlab返回的符號表達式難以理解,用subexpr函數,可以將表達式中重復出現的子式用一個符號表示,從而簡化表達形式 c=sym('c','real');x=sym('x','real');s=solve(x^3-x+c)a=subexpr(s)

得到

sigma

=

-108*c+12*(-12+81*c^2)^(1/2)a =

[ 1/6*sigma^(1/3)+2/sigma^(1/3)] [-1/12*sigma^(1/3)-1/sigma^(1/3)+1/2*i*3^(1/2)*(1/6*sigma^(1/3)-2/sigma^(1/3))] [-1/12*sigma^(1/3)-1/sigma^(1/3)-1/2*i*3^(1/2)*(1/6*sigma^(1/3)-2/sigma^(1/3))]

pretty函數有時也能起到同樣的作用。Pretty(f)顯示函數的習慣書寫形式

線性方程組的求解

求解線性方程組,用反斜杠 a=hilb(3)b=[1 2 3]' ab

矩陣的特征值和特征向量

用eig(v,d)函數,[v,d]=eig(A);其中d將返回特征值,v返回相應的特征向量,缺省第二個參數將只返回特征值 syms a b c real A=[a b c;b c a;c a b];[v,d]=eig(A);

為了觀察更清楚,使用以前學過的替換函數,這里不用默認的sigma,而改用M,顯式的代替繁瑣的表達子式 vv=subexpr(v);vs=subs(vv,'m','sigma')運行結果為

vs = [ 1, 1, 1] [-(c+(m)-a)/(c-b),-(c-(m)-a)/(c-b), 1] [-(a-(m)-b)/(c-b),-(a+(m)-b)/(c-b), 1]

再用m替換d中的表達子式 dd=subexpr(d);ds=subs(dd,’m’,’sigma’)運行結果為ds =

[(m), 0, 0] [ 0,-(m), 0] [ 0, 0, c+a+b] note 求特征值也可用以下命令

f=poly(A)poly函數 用來求A的特征多項式

d=solve(f)solve(f)函數用來求多項式的解

svd()函數 求矩陣的奇異值分解,將矩陣分解為兩個正交矩陣和對角矩陣的乘積 a=sym(hilb(2))[u,s,v]=svd(a)

代數方程和方程組

代數方程的求解可用solve(f)命令,如果f不含=,matlab將給表達式置零。方程的未知量在默認的情況下由findsym決定或顯式指出 syms a b c x

solve(a*x^2+b*x+c)以x為默認變量

solve(a*x^2+b*x+c,a)指定對a為變量

求含有等號的方程的解(一定要加單引號)

f=solve(‘cos(x)=sin(x)’)

x=solve('exp(x)=tan(x)')如果不能求得符號解,就計算可變精度解。求解方程組與單方程類似 解一個三元一次方程

v=solve('a*u^2+v^2','u-v=1','a^2-5*a+6')結果為v =

a: [4x1 sym] u: [4x1 sym] v: [4x1 sym]

一些常用的符號運算 極限運算limit

limit(f)求x到0的極限

limit(f,x,a)或limit(f,a)求x到a的極限

limit(f,a,’left’)limit(f,a,’right’)求x到a的左極限和右極限 limit(f,inf)求x趨于無窮的極限 符號求和symsum(s)

symsum(s)以默認的findsym決定的變量求和

symsum(s,v)以s中指定的變量v求和

symsum(s,a,b)symsum(s,v,a,b)從a到b的有限項求和

syms k n

symsum(k)從0到k求和

symsum(k,0,n-1)從0到n-1求和 symsum(1/k^2,1,inf)無限項求和 泰勒級數taylor(f)

taylor(f)表示求f的5階talor展開,可以增加參數指定展開的階數(默認式5),也可以對于多元函數指定展開的變量,還可以指定在哪個點展開 syms x t taylor(exp(-x))

taylor(log(x),6,1)在1點的6階taylor展開

taylor(x^t,3,t)對t的3階taylor展開 積分變換

fourier變換和逆變換fourier(f)fourier分析可以將信號轉換為不同頻率的正弦曲線。可對離散數據進行分析,也可對連續時間系統進行分析,特別在信號和圖形處理領域。離散變換(DFT)作用于有限數據的采集,最有效的是快速fourier變換(FFT)F=fourier(f)獨立變量x,返回關于參數w的函數

F=fourier(f,v)返回函數F關于符號對象v的函數

F=fourier(f,u,v)對關于u的函數f進行變換,而不是缺省的w,返回函數F是關于v的函數 syms t v w x fourier(1/t)

fourier(exp(-t)*sym('Heaviside(t)'),v)fourier(diff(sym('F(x)')),x,w)Fourier逆變換

f=ifourier(F)缺省獨立變量w,返回關于x的函數對w進行積分 f=ifourier(F,v)返回函數f是關于符號對象v的函數,而不是缺省的x f=ifourier(F,u,v)是關于u的函數f進行變換,而不是缺省的x,返回函數f是關于v的函數

Laplace變換和逆變換laplace(f)應用于連續系統(微分方程)中,可以用來求解微分方程的初值問題 laplace(F)缺省獨立變量t,缺省返回關于s的函數L

laplace(F,t)返回關于t的函數L,而不是缺省的s

laplace(F,w,z)對函數F的自變量w積分,返回關于z的函數L 逆變換

F=ilaplace(L)缺省獨立變量s,返回關于t的函數F F=ilaplace(L,y)返回關于y的函數F,而不是缺省的t F=ilaplace(L,y,x)對函數L的自變量y積分,返回關于x的函數F Z-變換和逆變換ztrans(f)標量符號f的Z-變換

F=ztrans(f)缺省獨立變量n,返回關于z的函數

F=ztrans(f,w)返回關于符號變量w的函數F,而不是缺省的z F=ztrans(f,k,w)關于k的符號變量作Z-變換返回關于符號變量w的函數 逆變換iztrans(F)f=iztrans(F)或(F,k)或(F,w,k)

符號繪圖函數

符號函數簡易繪圖函數ezplot(f)f可以包含單個符號變量x的字符串或表達式,默認畫圖區間(-2pi,2pi),如果f包含x和y,畫出的圖像是f(x,y)=0的圖像,缺省區間是-2pi

syms x t ezplot('t*cos(t)','t*sin(t)',[0,4*pi])繪制符號圖像函數fplot(fun,lims,tol,’linespec’,n)其中lims=[xmin,xmax]或[xmin,xmax,ymin,ymax] tol為指定相對誤差,默認0.001 ‘linespec’指定繪圖的線型 n指定最少以n+1個點繪圖

[x,y]=fplot(fun,lims,…)只返回用來繪圖的點,并不繪圖,可以自己調用plot(x,y)來繪制圖形。syms x subplot(2,2,1),fplot('humps',[0,1])f='abs(exp(x*(0:9))*ones(10,1))' subplot(2,2,2),fplot(f,[0,2*pi])subplot(2,2,3),fplot('sin(1./x)',[0.01,0.1],1e-3)matlab繪圖 二維圖形的繪制

plot 在(x,y)坐標下繪制二維圖像 支持多個x-y二元結構

plot3 在(x,y,z)坐標下繪制三維圖形 loglog 在(x,y)對數坐標下繪制二維圖形

semilogx 在x為對數坐標,y為線性坐標的二維坐標中繪圖

semilogy 在x為線性坐標,y為對數坐標的二維坐標中繪圖

plotyy 在有兩個y軸的坐標下繪圖

plot用法

plot(x,y,'--rs','linewidth',2,'markeredgecolor','k',...'markerfacecolor','g','markersize',10)plotyy用法

plotyy(x1,y1,x2,y2)以x1為標準,左軸為y軸繪制y1向量,x2為基準,右軸為y軸,繪制y2向量

plotyy(x1,y1,x2,y2,fun)用字符串fun指

定的繪

(plot ,semilogx,semilogy,loglog,stem)plotyy((x1,y1,x2,y2,fun1,fun2)t=0:pi/20:2*pi;y=exp(sin(t));

plotyy(t,y,t,y,'plot','stem')stem為二維桿圖

[ax,h1,h2]=plotyy(?)返回左右兩y軸的句柄(分別為ax(1)ax(2),以及在兩坐標軸中生成的圖形對象的句柄,分別為h1 h2 t=0:900;A=1000;a=0.005;b=0.005;z2=cos(b*t);z1=A*exp(-a*t);

[haxes,hline1,hline2]=plotyy(t,z1,t,z2,'semilogy','plot');axes(haxes(1))

ylabel('semilog plot')對數坐標 axes(haxes(2))ylabel('linear plot')set(hline2,'linestyle','--')其他二維圖形繪圖指令 bar(x,y)二維條形圖 hist(y,n)直方圖

histfit(y,n)帶擬和線的直方圖,n為

直方的個數 stem(x,y)火柴桿圖 comet(x,y)彗星狀軌跡圖 compass(x,y)羅盤圖 errorbar(x,y,l,u)誤差限圖 feather(x,y)羽毛狀圖

fill(x,y,’r’)二維填充函數 以紅色填充

pie(x)餅圖

polar(t,r)極坐標圖 r為幅值向量,t為角度向量 t=0:0.1:8*pi;r=cos(3*t/2)+1/2;

polar(t,r),xlabel('polar 指令')quiver(x,y)磁力線圖 stairs(x,y)階梯圖 loglog(x,y)對數圖

semilogx semilogy 半對數圖

matlab三維作圖 plot3(x,y,z)三維線條圖 t=0:pi/50:15*pi;

plot3(sin(t),cos(t),t,'r*')與plot相似 v=axis 返回各個軸的范圍

text(0,0,0,'origin')在某個坐標點加入文字

plot3 增加維數可以一次畫多個圖,使所個二維圖形眼一個軸排列

三維網線圖的繪制 mesh(x,y,z)網格圖

mesh(x,y,z,c)四維作圖,(x,y,z)代表空間三維,c代表顏色維 mesh(…,’property name’,property

value,…)設置曲面各屬性的值

[x,y,z]=sphere(12);

mesh(x,y,z),hidden off 曲面設置為透明

meshc(x,y,z)畫網格圖和基本的等值線圖

meshz(x,y,z)畫包含零平面的網格圖 waterfall(x,y,z)與mesh一樣,只是在效果上它的網格線只在x軸一個方向出現,呈瀑布狀水線

兩個變量的標量指令meshgrid(x)或meshgrid(x,y)(p179)

將兩個一維向量生成兩個二維向量,以便進行z=f(x,y)運算,算出z的所有值,z為x y的標量指令 [X,Y]=meshgrid(x)meshgrid(x,x)的簡略式

[X,Y]=meshgrid(x,y)[X,Y,Z]=meshgrid(x,y,z)用于三維圖形的繪制

[x,y]=meshgrid([-2:0.1:2]);z=x.*exp(-x.^2-y.^2);plot3(x,y,z)surf(x,y,z,c)著色表面圖 surf(x,y,z)隱含著c=z surf(z)隱含著x,y的值為surf指令根據z的尺寸自動生成

surfc 畫出具有基本等值線的曲面圖 surfl 畫出一個具有亮度的曲面圖 shading flat 網線圖的某整條線段或曲面圖的某個貼片都著一種顏色 shading interp 某一線段或貼片上各點的顏色由線或片的頂端顏色經線性插值而得

曲面圖不能設成網格圖那樣透明,但需要時,可以在孔洞處將數據設成nun

等高線的繪制

在二維空間繪制等高線contour contour(x,y,z,n)繪制n條等值線(n可省略)

contour(x,y,z,v)在向量v所指定的高度上繪制等高線(可省)

c=contour(x,y,z)計算等值線的高度值

c=contourc(x,y,z,n)計算n條等高線的x-y坐標數據

c=contourc(x,y,z,v)計算向量v所指定的等高線的x-y坐標數據 clabel(c)給c陣所表示的等高線加注高度標識

clabel(c,v)給向量v所指定的等高線加注高度標識

clabel(c,’manual’)借助鼠標給點中的等高線加注高度標識

三維空間繪制等高線contour3(x,y,z)[x,y,z]=peaks(30);contour3(x,y,z,16,'g')二元函數的偽彩圖pcolor(x,y,z)是指令surf的二維等效指令,代表偽彩色,可與contour單色等值線結合畫彩色等值線圖 [x,y,z]=peaks(30);

pcolor(x,y,z);偽彩色

shading interp 顏色插值,使顏色平均漸變

hold on,contour(x,y,z,20,'k')...畫等值線

colorbar('horiz')水平顏色標尺 c=contour(x,y,z,8);clabel(c)標注等高線

矢量場圖(速度圖)quiver

用于描述函數z=f(x,y)在點(x,y)的梯度大小和方向

[X,Y]=meshgrid(x,y)X,Y為Z陣元素的坐標矩陣

[U,V]=gradient(Z,dx,dy)U,V分別為Z對x對y的導數,dx dy是x y方向上的計算步長

quiver(X,Y,U,V,s,’linespec’,’filled’)U,V為必選項,決定矢量場圖中各矢量的大小和方向,s為指定所畫箭頭的大小,缺省時取1,linespec為字符串,指定合法的線形和彩色,filled用于填充定義的繪圖標識符

[x,y]=meshgrid(-2:.2:2,-1:.15:1);z=x.*exp(-y.^2);

[px,py]=gradient(z,.2,.15);contour(x,y,z);

hold on,quiver(x,y,px,py),axis image 多邊形的填色fill(x,y,c)

c定義顏色字符串,可以是’r’,’b’等,也可以用RGB三色表示[r,g,b]值為0-1

圖形的四維表現

第二篇:MATLAB知識總結

1、命令x=0:0.2:2中的賦值格式是matlab常用的變量賦值格式,其中0表示初始值,0.2表示增量,而2表示終止值。若數組x無規律可循,那么x賦值得逐一輸入單個元素了,這時要使用賦值格式符“[]”,如x=[0 5 8 1]表示把0 5 8 1 賦值給變量x.2、命令y=x.^3中的“.”表示對數組x逐一操作而不是把數組看做一個整體進行操作,而“^”表示數組的冪指數即對數組進行相乘的操作。

3、假設要建立起始值為0,終止值為?,間隔為0.1?的數組x,那么用前三種方法創建x的具體命令為:

4.x=[0 0.1*pi

0.2*pi 0.3*pi 0.4*pi 0.5*pi 0.6*pi 0.7*pi 0.8*pi 0.9*pi pi] x=(0:0.1:1)*pi x=linspace(0,pi,10)如果沒有10這個數字表示將[0, ?]分成間距相等的100個點。而x=logspace(1,2,10)表示對數(lg)間距相等的十個點,如沒有10這個數字,表示將在[10,102]之間產生對數間距相等的50十個點。

5.tic和toc用來記錄時間。6.tic

A=[];

A=diag(5*ones(5,1))+diag(ones(4,1),1)+diag(ones(4,1),-1)

Toc 可用來做出一個矩陣。

7.學會掌握for——end的循環語句。

8.學會使用while-end循環語句,此語句適合適用于循環次數不確定情況下。只要表達式的值非零即為邏輯“真”,則程序就會一直循環下去。

9.循環終止問題,用break來實現。

10.調試程序時文件名是什么就在命令窗口輸入什么,而且要先在第一行弄出紅點才行。11.符號變量的創建用sym和syms,后者可創建多個符號變量。

12.創建符號方程用的格式為:equ=('方程'),千萬不能用這種格式:equ=方程。13.數值矩陣的表現形式是約數,而符號型矩陣的表現形式是精確的。數值型變量和符號型變量之間不能直接運算,即使它們都可能是數字,得先把數值型變量轉化為符號型變量。

14.一般來說,存儲matlab文件時用字母來命名才能有效。15.創建一個符號型實數的一般格式為: x=sym(x,'real')Y=sym(y,'real')或者sym x y real;要想清除x的符號屬性可使用以下命令:x=sym(x,'unreal')或syms x unreal 16,real(x)表示x實部,而imag(x)表示x的虛部,而conj(x)表示x的共厄復數。17.matlab運算中涉及到數值變量、字符變量和符號變量(級別按順序一次增高)的運算,系統將各變量轉化為最高級別的運算。

18.將其他類型的變量轉化為符號型變量的格式為:s=sym(f),f不能是矩陣或者非法的表達式。

19.用s=int2str(x)可以將x轉化為字符變量(存儲字節大些)s,當x為有理數時,得四舍五入;當x為虛數時,將只對x的實部進行轉換。

20.S=num2str(x)也是將x轉化為字符變量s,只是對x無任何限制。21.將其他變量轉化為數值變量:

1)x=double(s),如果s中含有非數值的符號,系統將給出錯誤的信息,當s為字符變量時,該命令將s轉化為數值矩陣x。矩陣中的元素值為s中的相應字符的ASCII碼值。

2)當s是一個包含非數字字符的變量時,str2num(s)命令將返回一個空矩陣s。

3)x=numeric(s)命令可將變量s轉化為數值變量x,這里s既可以是字符變量也可以是符號變量,但s不能是矩陣,否則將出錯誤信息。

22.利用findsym命令可以找到符號表達式或者符號矩陣中的符號變量,并且符號變量以

23.Pretty將代數式A由機器格式轉變為書寫格式,在轉化過程中,不會對A進行任何簡化。

24.collect(A):按默認變量對表達式A進行降冪排列,默認變量是指由findsym確定的變量。

25.collect(A,v)按照指定變量v對表達式A進行降冪排列。26.expand(S):將表達式S展開。

27.horner(S):把符號表達式S展開為:ax(bx(cx···(dx+z)+e···)+f)+g.28.factor(S):把符號表達式S展成重疊式。

29.Simplify(S):用一般化簡方法化簡符號表達式S.但共有六種化簡法,此種化簡法常用,但不具精確性。

30.不定化簡法:simple(S):用不定化簡法化簡符號表達式S。若S為矩陣,則返回結果為整個矩陣(而不是單個元素)的最簡短表達式。

31.[R,HOW]=simple(S):用不定化簡法化簡表達式S,其中R為S的化簡結果,HOW為對應結果所采用的化簡方法或者轉換方法。

32.combine(trig)用三角函數的運算性質對主對角代數式進行化簡;

convert(exp):將代數式盡量轉化為由ex、eix表示的指數形式。

convert(sincos):將代數式盡量轉化為由sin(x)、cos(x)形式表示的式子。

convert(tan):將代數式盡量轉化為由tan(x)形式表示的式子。

33.[n,d]=numden(S)用分子分母法化簡符號表達式S。返回結果n為分子,d為分母。34.[Y,SIGMA]=subexpr(X,'SIGMA'):X表示待整理的符號表達式或者符號表達式的矩陣。

SIGMA:在整理過程中提出的各種因子將以矩陣的格式保存在名為SIGMA的變量中。Y:已提取各種因子后,將整理完畢的符號表達式或者符號表達式的矩陣保存在Y中。35:SS=subs(s,old,new):s為符號表達式,old為s中將要被代替的“舊”變量名,new是用來代替s中old的“新”變量名或代數式。(注意subs不但可以進行單一變量的代換,還可以同時進行多個變量的替換)

36.SS=subs(S)利用由函數或MATLAB工作空間中得到的具體值(無論是數值型還是字符型)來代替S中相應的所有變量。

37.SS==subs(s,new):用new來代替S中的自由符號變量。

第五章

微分:

1.diff(x,'v')可用來對變量'v'求導,diff(x,'v',n)是對變量‘v’求n階導數。2.diff(X,N)按第一個非單元素集合的維計算X的N階導數。積分:

不定積分:1.int(s);int(s,v)這兩種格式都是求s的不定積分,求別在于:第一種調用格式以findsym(S)命令尋找到的變量為自變量,計算S的不定積分;而第二種調用格式則針對指定變量V進行不定積分運算。

定積分:int(S, v, a, b)其中S為表達式,v為指定變量,a為積分下限,b為積分上限。當a或b取inf或(-inf)時該命令計算的是廣義積分。但是這只能得到一個具體的表達式,而使用numeric便可以得到一個值。求極限:

limit(S,v):其中S為表達式,v為指定變量。該命令的功能:用于求當v→0時的表達式S的極限值。

limit(S):其中S為表達式,該命令的功能:用于求當系統默認變量→0時的表達式S的極限值。

limit(F,x,a):該命令的功能:用于求當x→a時表達式F的極限值。

limit(F,x,a,'right'):該命令的功能:用于求當x→a?時表達式F的極限值(即右極限值)。

limit(F,x,a,'left'):該命令的功能:用于求當x→a?時表達式F的極限值(左極限值)。求級數:

symsum(S):以函數findsym(S)j決定的變量(比如說自變量為K),求K從0開始到k-1為止S的前K項和。

symsum(S,v):功能上,只不過指定變量為v。

symsum(S,v,a,b):求自變量V從a到b時S的和。經常和simple連用。級數展開:taylor(f):用于求f關于默認變量的5階近似麥克勞林多項式。taylor(f,n):用于求f關于默認變量的n-1階近似麥克勞林多項式。taylor(f,v):同上,只不過自變量為指定變量V.taylor(f,a): 前三種調用格式求出的結果均是關于自變量等于零的展開式,而該命令則可以求解函數f在自變量等于a處的泰勒展式。

多元函數泰勒級展開式:maple('readlib(mtaylor)');maple('mtaylor(f,v,n,w)')傅里葉展開式先建立個函數mfourier 1)函數的建立:function [a0,an,bn]=mfourier(f)

syms n x

ao=int(f,-pi,pi)/pi;

an=int(f*cos(n*x),-pi,pi)/pi;bn=int(f*sin(n*x),-pi,pi)/pi;dig命令:diag(v,k):當V是由n個元素組成的矢量時,該命令的返回值是階數為n+abs(k)的方陣。其中對角線由矢量v的元素組成,其余元素由0組成。當k=0時,v為主對角線;當k>0時,v位于主對角線之上;當k<0時,v位于主對角線之下。diag(v):與dig(v,0)完全相同,把矢量v置于主對角線之上。

diag(A,k):其中A為矩陣。該命令返回值是由矩陣A的第k條對角線的元素所組成的列矢量。

diag(A):相當于diag(A,0),得到由矩陣A的主對角線元素所組成的列矢量。triu命令(抽取矩陣的上三角部分)triu(A):抽取矩陣的上三角部分組成一個新的矩陣,其余元素用0來填充。

triu(A,k):抽取矩陣的第k條對角線上的三角部分組成一個新的矩陣,其余元素用0填充。當k=0時,triu(A,0)與triu(A)功能完全相同,抽取矩陣A主對角線以上的三角部分;k>0抽取元素對應矩陣A主對角線以上、第k條對角線以上的部分,k<抽取元素對應矩陣A主對角線以下、第k條對角線以上的部分。tril命令(抽取矩陣的下三角部分):和triu相似。inv命令(矩陣求逆):inv(A):返回矩陣A的逆。det命令(求矩陣的行列式):det(A):返回矩陣A的行列式。

rank命令(求矩陣的秩):rank(A,tol):返回矩陣A的奇異值中大于誤差tol的奇異值個數。

rank(A):同上,默認精度tol=max(size(A)*norm(A))*eps.null命令(求矩陣的零空間的正交基):Z=null(A):求矩陣A的零空間的正交基,它是由矩陣A的奇異值分解得到的。

Z=null(A,'r'):求矩陣A的零空間的正交基,它是由縮減行階梯矩陣得到的并且A*Z=0。Colspace命令(求矩陣的列空間的基):Z=colspace(A):返回矩陣A的列空間的基,并且有size(Z,2)=rank(A)。

eig命令(求矩陣的特征值和特征矢量)E=eig(X):返回由方陣X的特征值組成的特征矢量。

[V ,D]=eig(X):返回方陣X的特征值矩陣D和特征矢量矩陣V,其中X、V、D滿足XV=VD;特征值矩陣D是以X的特征值為對角線的元素生成的對對角矩陣;矩陣X的第k個特征值對應的特征矢量是矩陣D的第k列列矢量。只有這樣才有XV=VD.svd命令(矩陣的奇異分解值)

S=svd(X):f返回由矩陣X的奇異值組成的矢量。jordan命令(求矩陣的約旦標準形)jordan(X):返回矩陣X的約旦標準形。[V,J]:jordan(X):除了返回矩陣X的約旦標準形J外,還給出了相似變換矩陣V,并有VA*V=J。

poly命令(求矩陣的特征多項式)

P=poly(X):若X為nxn的矩陣,則該命令返回X的特征多項式P。P為包含n+1個元素的矢量,是特征多項式的系數。Expm命令(求矩陣的指數形式)expm(X):用pade法計算ex。

一般代數方程的求解:solve(Equ):Equ為符號方程,該命令可以求Equ關于系統默認變量為自變量的符號方程的解。

solve(Equ,var):同上,但var為指定的自變量,求出的解是關于指定變量的解。solve('equ','equ',···,'equ')

[a1,a2,···,an]=solve('equ1','equ2',···,'equn','var1','var2',···,'varn')

最后兩種調用格式相差無幾,都是求代數方程組的解,只不過最后一種調用格式制定了自變量var1,var2,···,varn.事實上,var1,var2,···,varn可有可無,只是因為solvem命令只有當方程組的數目和自變量的數目相同時才能進行求解,并且解得的結果并不是按照solve命令括號中var1,var2,···,varn的順序分別賦給a1,a2,··,an的,而是按照英文字母表的順序依次賦給a1,a2,···,an。即當var1在所有變量中按字母表順序排序時排在最后一個,那么在結果中an才是對應變量var1的解。

注意:lambertw是個函數(稱為Lambert W 函數),lambertw(A)是指滿足?e=A這樣的表達式所對應的值。

注意:當用表達式s1,s2···sn代替solve命令中的符號方程組equ1,equ2,···,equn時,就意味著所求的是以s1=0,s2=0,···,sn=0所構成的方程組的解。線性代數方程組的求解:

X=linsolve(A,B):求AX=B的解,返回X。常微分方程組的求解:

注意:Matlab中用D表示對變量求導數,Dy表示對y求一階導數,Dny表示對y求n階導數。因此,y''+2y'=x這一微分方程在Matlab中需描述為:D2y+2Dy=x.無初值條件的常微分方程:調用格式為:dsolve('equ')或desolve('equ','var')后者中“var”為指定變量。

?有初值條件的常微分方程:dsolve('equ,''condition1,condition2,···,conditionn','var')dsolve('equ','condition1','condition2',···,'conditionn','var')求解常微分方程組:

dsolve('equ1','equ2',···,'equn','var')dsolve('equ1,equ2,···,equn','var')desolve('equ1','equ2',···,'equn','condition','condition1','condition2',···,'condition','var')desolve('equ1,equ2,···,equn','condition,condition1,condition2,···,condition','var')求解線性常微分方程組:使用這個函數: function y=dsolve(A)syms t real e=eig(A);%求變量的特征矢量。

[v,d]=eig(A);%求得A的特征值矩陣d和特征值矢量矩陣v y=exp(d*t)'*v;%求得線性齊次常微分方程組X'=AX的解。反函數和復合函數的求法:

g=finverse(f):返回值g是已知函數f的反函數(自變量由系統的默認變量確定)。若f為單符號變量(如x)的一個標量,那么g是一個涉及符號變量的標量,并且滿足g(f(x))=x。

g=finverse(f,v):同上,但指定變量為v。該命令在f含有多個符號的情況下,求它關于某個變量的反函數時要比第一種調用格式顯得明了了。求復合函數:

compose(f,g):返回值為f(g(y)),其中f=f(x),g=g(y)。compose(f,g,z):返回值為f(g(z)),其中f=f(x),g=g(y)compose(f,g,x,z):返回值f(g(z))且視x為f的自變量,即如果f=cos(g(z)txtxg(z)),則compose(f,g,x,z)返回值就是cos(),而compose(f,g,t,z),則返回值為cos()。

compose(f,g,x,y,z):返回值為f(g(z))且視x為f的自變量,視y為g的自變量。例如:xtyusin(zu)f=cos(),g=sin()則compose(f,g,x,y,z)返回值為cos(t),,而compose

sin(yz)(f,g,x,u,z)則返回為cos(t)。

第六章

傅立葉變換及其逆變換:

F=fourier(f):對自變量為x的表達式f(x)進行變換,返回值為F(w);當f是變量w的函數即f=f(w)時,則變量結果為F=F(t);如果變量表達式中沒有t和x這兩個變量,則該命令將對系統默認的變量進行傅立葉變換。

F=Fourier(f,v):指定了變量結果為變量v的函數。表現在計算過程中則公式變為:

??F(v)=???f(x)e?ivxdx。用MATLAB語言則可描述為:fourier(f,v)<=>F(v)=int(f(x)*exp(-i*v*x),x,-inf,inf)F=fourier(f,u,v):指定了要對函數表達式做關于變量u的fourier變換。對應此時的??傅立葉變換公式為:F(v)?逆變換:

???f(u)e?ivudu。

f=ifourier(F):F為待進行傅立葉逆變換的代數表達式。該命令對F(w)實行傅立葉逆變換得到一個自變量為x的函數f(x)。如果F=F(x)則該命令將返回一個自變量為t的函數f(t).f=fourier(F,u)f=fourier(F,v,u)后兩種調用格式中u,v的用法和fourier命令中的用法完全一致。拉普拉斯變換及其逆變換:

??拉普拉斯公式:L(s)??F(t)e0?stdt。

L=laplace(F):F為待進行拉普拉斯變換的代數表達式,其默認變量為t,若p不含t。則針對系統默認的變量對表達式進行拉普拉斯變換,該命令返回的函數其默認自變量為s。如果F=F(s)那么該命令的返回結果為L=L(t)。該命令可用MATLAB語言描述為:Laplace(F)<=>L(s)=int(F(t)*exp(-s*t),0,inf)并且積分針對變量t進行。

L=laplace(F,t)指定返回結果L為自變量t的函數,而不是系統默認的S用MATLAB語言可以描述為:Laplace(F,t)<=>L(t)=int(F(x)*exp(-x*t),0,inf)。用公式可表示為:??L(t)??F(x)e0?txdx。

L=laplace(F,w,z)與傅立葉變換的解是類似。

c?i?拉普拉斯逆變換:公式為:F(t)?F=ilaplace(L)F=ilaplace(L,y)F=ilaplace(L,y,x)這些與傅立葉變換的解釋類似。

??L(s)ec?i?stds

Z變換:公式為F(z)?F=ztrans(f).F=ztrans(f,w)F=ztrans(f,k,w)

?0f(n)zn。

和傅立葉變換解釋差不多。f=iztrans(F)f=iztrans(F,k)f=iztrans(F,w,k)和傅立葉變換解釋差不多.幾個補充命令:

1、double(X):返回值是X的雙精度型矩陣,通常在循環語句中或者判斷語句中使用double命令。

2、poly2sym(C):返回值對應矢量C的多項式表達式,返回結果的默認變量是X。

Poly2sym(C,‘v’):只不過將變量X換成v.3、sym2poly(P)與2的命令功能相反:該命令返回的結果是一個行矢量,該式量的元素是多項式的系數。

4、ccode(s):返回符號表達式s的C語言編碼形式。

5、sinint正弦積分函數:sinint(x)=int(sin(t)/t,t,0,x)

6、余弦積分函數cosint(x)=Gamma+log(x)+int((cos(t)-1),t,0,s).其中Gamma是歐拉常數,為:?=0.577215664901···

7、zeta(z)=sum(1/k^z,k,1,inf),即計算

8、zeta(n,z)=計算zeta(z)的k階導數。

注意:浮點運算誤差較大,而符號運算結果精確。

9、r=vpa(s):按Digit可控精度計算s的值。digits(n)可設定有效數值、vpa(s,d)指定s的精度為d為有效數值。

10、創建抽象函數的格式:f=sym('f(var1,var2,var3,···)')

11、用map命令創建抽象函數:

map(fcn,expr,arg1,arg2,···,argn)

map(fcn,arg1,expr,arg2,···,argn)以上命令中,fcn:一個操作手續或者名稱;expr表達式;arg1:用于操作對象。

12、調用特殊函數可用mfun('函數')來調用。

13、函數計算器的使用:在命令欄中輸入funtool,打開操作器。

第一排按鈕是:df/dx:求函數的導數

intf:求函數的積分

simplef:對函數f(x)化簡

numf:求函數的分子部分

denf:求函數的分子部分

1/f:求函數的倒數 finv:求函數的反函數。swap:交換f和g的值。

1kz的積分。

在命令欄中輸入taylor可調出泰勒計算器。

第七章符號函數圖形的繪制

fplot(fun,lims,str,tol):直接繪制函數y=fun(x)的圖形其中lims為一個向量,若lims只包含兩個元素,則表示x軸的范圍;若lims包含四個元素則前兩個元素表示x軸的范圍,后兩個元素表示y的范圍。str可以指定圖形的線性和顏色。tol值小于一,代表相對誤差。

fplot(fun,lims,n):用最少為n+1個點來繪制函數fun的圖形。用fplot(@humps,[-1,5])來繪制函數humps的圖形比較光滑,其中@humps表示以函數句柄的形式引用函數,若是直接輸入函數,而不是函數名,則用單引號括起。

fplot('[tan(x),sin(x),cos(x)]',[-2*pi,2*pi])plot('sin(1/x)',[0.01 0.1],1e-3)ezplot()可繪制二元函數:

1、ezplot(f):在默認區間x?(?2?,2?),上繪制函數f(x,y)的圖形。

2、ezplot(f,[a,b]):在區間x?(?2?,2?)上繪制函數圖形。對于隱函數f(x,y)來說,1、ezplot(f):在默認區間x?(?2?,2?),y?(?2?,2?)上繪制函數f(x,y)的圖形。

2、ezplot(f,[x1,x2,y1,y2]):在這兩個區間上繪制圖形f(x,y).3、Ezplot('u^2-v^2-1',[-3,2,-2,3])就是區間u?(-3,2),v?(-2,3)上繪制u^2-v^2-1=0的函數圖象,因為變量不是x,y所以區間按字母分配。

4、ezplot(x,y):在默認區間t?(0,2*pi)上繪制函數x=x(t)和函數y=y(t)的圖形。

5、ezplot(x,y,[tmin,tmax]):在區間(tmin,tmax)上繪制參數函數x=x(t),y=y(t)的圖形

ezpolar繪制極坐標下的圖形

ezpolar(f):在默認區間theta?(0,2?)上繪制函數rho=f(theta)的圖形,其中theta為極角,rho為極徑。

ezpolar(f,[a,b]):在區間theta?(a,b)上繪制函數rho=f(theta)的圖形。ezplot3繪制三維空間曲線

ezplot3(x,y,z):繪制三維曲線,含參數t.ezplot3(x,y,z,[tmin,tmax]):在區間t?(tmin,tmax)內繪制三維曲線。ezplot3(x,y,z,[tmin,tmax],'animate'):產生空間曲線的動畫繪制效果。

第三篇:matlab圖像處理小結

1.function [center, r] = solve_circle(pt1, pt2, pt3)

2.%Effect: solve the circle which across points 'pt1', 'pt2' and 'pt3' 3.%Inputs:

4.%pt1, pt2, pt3: [x, y]

5.%center: the circle center [x0;y0] 6.%r: the radius of the circle 7.%Author: Su dongcai at 2012/1/2 8.A = zeros(2, 2);B = zeros(2, 1);9.[A(1, :), B(1)] = circle2line(pt1, pt2);10.[A(2, :), B(2)] = circle2line(pt2, pt3);11.center = AB;

12.r = norm(pt1'(y2^2 + y2^2)18.%(a-x2)^2 +(b-y2)^2 = r^2 | 19.%Inputs:

20.%pt1, pt2: [x1, y1], [x2, y2] 21.%Outputs:

22.%A: 2[x1-x2, y1-y2]

23.%B:(x1^2 + y1^2)pt2);

26.B = norm(pt1)^2-norm(pt2)^2;

close all;clear;clc;>> i=imread('rice.png');%>> imshow(i);>> background=imopen(i,strel('disk',15));>> i2=imsubtract(i,background);%>> figure,imshow(i2);>> i3=imadjust(i2,stretchlim(i2),[0 1]);%>> figure,imshow(i3);>> level=graythresh(i3);>> bw=im2bw(i3,level);%>> figure,imshow(bw);>> [labeled,numobjects]=bwlabel(bw,4);graindata=regionprops(labeled,'all');

close all;clear;clc;i=imread('rice.png');background=imopen(i,strel('disk',15));i2=imsubtract(i,background);i3=imadjust(i2,stretchlim(i2),[0 1]);level=graythresh(i3);bw=im2bw(i3,level);[labeled,numobjects]=bwlabel(bw,4);data=regionprops(labeled,'all');

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %2006.6.2 close all;clear;clc;>> i=imread('r.jpg');%>> figure,imshow(i);>> imgray=rgb2gray(i);>> figure,imshow(imgray)>> background=imopen(imgray,strel('disk',15));>> i2=imsubtract(imgray,background);%>> figure,imshow(i2);>> i3=imadjust(i2,stretchlim(i2),[0 1]);%>> figure,imshow(i3);>> level=graythresh(i3);>> bw=im2bw(i3,level);%>> figure,imshow(bw);>> imnobord=imclearborder(bw,4);%>> figure,imshow(imnobord);>> [labeled,numobjects]=bwlabel(bw,4);>> rgb_label=label2rgb(labeled,@spring,'c','shuffle');>> figure,imshow(rgb_label);>> graindata=regionprops(labeled,'all');hold on;for k=1:numobjects lab=sprintf('%d',k);text(graindata(k).Centroid(1),graindata(k).Centroid(2),lab,'Color','k');end hold off;%剔除碎米粒

>> idxdown=find([graindata.Area]<150);%剔除碎米粒 little=ismember(labeled,idxdown);figure,imshow(little);

[lab_little,num_little]=bwlabel(little,4);rgb_little=label2rgb(lab_little,@spring,'c','shuffle');figure,imshow(rgb_little);

little_data=regionprops(lab_little,'all');hold on;for k=1:num_little lab=sprintf('%d',k);text(little_data(k).Centroid(1),little_data(k).Centroid(2),lab,'Color','k');end hold off;%>> graindata(idxdown,:)=[];%剔除碎米粒 %剔除連接米粒

>> idxup=find([graindata.Area]>250);%剔除連接米粒 big=ismember(labeled,idxup);figure,imshow(big);

[lab_big,num_big]=bwlabel(big,4);rgb_big=label2rgb(lab_big,@spring,'c','shuffle');figure,imshow(rgb_big);

big_data=regionprops(lab_big,'all');hold on;for k=1:num_big lab=sprintf('%d',k);text(big_data(k).Centroid(1),big_data(k).Centroid(2),lab,'Color','k');end hold off;%>> graindata(numup,:)=[];%剔除連接米粒 %獲取完整米粒

idxsuit=find([graindata.Area]>=150&[graindata.Area]<=250);suit=ismember(labeled,idxsuit);figure,imshow(suit);%獲取完整米粒 [lab_suit,num_suit]=bwlabel(suit,4);suit_data=regionprops(lab_suit,'all');hold on;for k=1:num_suit signature=sprintf('%d',k);text(suit_data(k).Centroid(1),suit_data(k).Centroid(2),signature,'Color','r');end hold off;%獲取完整米粒 whos graindata whos little_data whos big_data whos suit_data

>> graindata >> mean([graindata.Area])>> mean([graindata.Eccentricity])>> mean([graindata.MajorAxisLength])>> mean([graindata.MinorAxisLength])>> mean([graindata.EquivDiameter])>> figure,hist([graindata.Area],20);>> figure,hist([graindata.Eccentricity],20);>> figure,hist([graindata.MajorAxisLength],20);>> figure,hist([graindata.MinorAxisLength],20);>> figure,hist([graindata.EquivDiameter],20);

data=[graindata.Area] data=[graindata.Centroid] data=[graindata.BoundingBox] data=[graindata.SubarrayIdx] data=[graindata.MajorAxisLength] data=[graindata.MinorAxisLength] data=[graindata.Eccentricity] data=[graindata.Orientation] data=[graindata.ConvexHull] data=[graindata.ConvexImage] data=[graindata.ConvexArea] data=[graindata.Image] data=[graindata.FilledImage] data=[graindata.FilledArea] data=[graindata.EulerNumber] data=[graindata.Extrema] data=[graindata.EquivDiameter] data=[graindata.Solidity] data=[graindata.Extent] data=[graindata.PixelIdxList] data=[graindata.PixelList]

Area 計算各個連通區域中的象素總數 BoundingBox 包含相應區域的最小矩形 Centroid 給出每個區域的質心

MajorAxisLength 與區域具有相同標準二階中心矩(又叫標準差)的橢圓的長軸長度 MinorAxisLength 與區域具有相同標準二階中心矩的橢圓的短軸長度 Eccentricity 與區域具有相同標準二階中心矩的橢圓的離心率

Orientation 與區域具有相同標準二階中心矩的橢圓的長軸與x軸的交角 Image 二值圖像,與某區域具有相同大小的邏輯矩陣。

FilledImage 與上相同,唯一區別是這是個做了填充的邏輯矩陣!本例中和上面的沒有區別,只有 區域有空洞時才有明顯差別。

FilledArea 是標量,填充區域圖像中的 on 像素個數

ConvexHull 是p行2列的矩陣,包含某區域的最小凸多邊形 ConvexImage 二值圖像,用來畫出上述的區域最小凸多邊形 ConvexArea 是標量,填充區域凸多邊形圖像中的 on 像素個數 EulerNumber 等于圖像中目標個數減去這些目標中空洞的個數 Extrema 8行2列矩陣,八方向區域極值點

EquivDiameter 是標量,等價直徑:與區域具有相同面積的圓的直徑.計算公式為:sqrt(4*Area/pi)

Solidity 是標量,同時在區域和其最小凸多邊形中的像素比例。計算公式為: Area/ConvexArea,這也是個仿射特征,實際上反映出區域的固靠性程度。

Extent 是標量,同時在區域和其最小邊界矩形中的像素比例。計算公式為:Area除以邊界矩 形面積,這也是個仿射特征,實際上反映出區域的擴展范圍程度。

PixelIdxList p元向量,存儲區域像素的索引下標

PixelList p行ndims(L)列矩陣,存儲上述索引對應的像素坐標 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 基于特定原則的區域選擇

當你要基于特定準則條件選擇某個區域時,將函數 ismember 和 regionprops 聯合使用是很有用處的。例如:創建一個只包含面積大于80的二值圖像,用以下命令

idx = find([stats.Area] > 80);BW2 = ismember(L,idx);regionprops函數的擴展思路

在regionprops函數的基礎上,你可以使用它提供的基本數據來擴展它的功能,比如我就將區域的曲率數據和骨架數據作為它的另外屬性值來開發,從而希望它能用來做更細致的特征提取。

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %2006.6.2 P221圖像粒度測定(雪花)>> i=imread('snowflakes.png');>> figure,imshow(i);>> %(2)>> clahei=adapthisteq(i,'numtiles',[10 10]);>> clahei=imadjust(clahei);>> imshow(clahei);>> gi=imadjust(im2double(i),[],[0 1]);>> figure,imshow(gi),title('adjusted grayscale image');>> %(3)>> se=strel('disk',10);>> topi=imtophat(gi,se);>> figure,imshow(topi),title('top-hat image');>> %(4)>> for counter=0:22 remain=imopen(clahei,strel('disk',counter));intensity_area(counter+1)=sum(remain(:));end >> figure,plot(intensity_area,'m-*'),grid on;>> title('sum of opening(pixels)');>> title('sum of opening values in opened image as a function of radius');>> xlabel('radius of opening(pixels)');>> ylabel('pixel value sum of opened objects(intensity)');>> >> >> >> for counter=0:20 remain=imopen(topi,strel('disk',counter));surfarea(counter+1)=sum(remain(:));end >> figure,plot(surfarea,'m-*'),grid on;>> set(gca,'xtick',[0 2 4 6 8 10 12 14 16 18 20]);>> title('surface area of opened objects as a function of radius');>> xlabel('radius of opening(pixels)');>> ylabel('surface area of opened objects(pixels)');>> %(5)>> intensity_area_prime=diff(intensity_area);>> figure,plot(intensity_area_prime,'m-*'),grid on;>> title('Granulometry(size distrubution)of snowflakes');>> set(gca,'xtick',[0 2 4 6 8 10 12 14 16 18 20 22]);>> xlabel('radius of snowflakes(pixels)');>> ylabel('sum of pixel values in snowflakes as a function of radius');>> derivsurfarea=diff(surfarea);>> figure,plot(derivsurfarea,'m-*'),grid on;>> title('granulometry(size distribution)of stars');>> xlabel('radius of stars(pixels)');>> ylabel('loss of pixels between two successive openings');

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %2006.6.2 花椒檢測 clc;clear;close all;i=imread('gj.jpg');imshow(i);icanny=edge(i,'canny');imshow(icanny);se90=strel('line',2,90);se0=strel('line',2,0);bwsdil=imdilate(icanny,[se90 se0]);figure,imshow(bwsdil),title('dilated');ifill=imfill(bwsdil,'holes');figure,imshow(ifill);

%bwero=imerode(bwsdil,[se90 se0]);%figure,imshow(bwero);%i2fill=imfill(bwero,'holes');%figure,imshow(bwero);%imshow(i2fill);

%bwnobord=imclearborder(bwsdil,4);%figure,imshow(bwnobord);bwnobord=imclearborder(ifill,4);figure,imshow(bwnobord);se=strel('disk',5);bwc=imclose(bwnobord,se);bwco=imopen(bwnobord,se);figure,imshow(bwc);figure,imshow(bwco);%mask=bwsdil&bwco;%figure,imshow(mask);clc [labeled,numobjects]=bwlabel(bwco);numobjects

jdata=regionprops(labeled,'all');%jdata

jarea=[jdata.Area];mean(jarea)max(jarea)min(jarea)hist(jarea,255)jdata.Eccentricity %std([jdata.Eccentricity])/(Mean([jdata.Eccentricity])jstd=std([jdata.Eccentricity])jmean=Mean([jdata.Eccentricity])jcv=jstd/jmean

>> std([jdata.Area])/ mean([jdata.Area])%面積的變異系數

>> std([jdata.Eccentricity])/ mean([jdata.Eccentricity])%橢圓的變異系數 >> std([jdata.MajorAxisLength])/ mean([jdata.MajorAxisLength])>> std([jdata.MinorAxisLength])/ mean([jdata.MinorAxisLength])>> std([jdata.EquivDiameter])/ mean([jdata.EquivDiameter])

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %2006.06.06 rice.png close all;clear;clc >> i=imread('rice.png');imshow(i);background=imopen(i,strel('disk',15));figure,imshow(background);i2=imsubtract(i,background);figure,imshow(i2);i3=imadjust(i2,stretchlim(i2),[0 1]);figure,imshow(i3);level=graythresh(i3);bw=im2bw(i3,level);figure,imshow(bw);imnobord=imclearborder(bw);[label,numobjects]=bwlabel(imnobord,4);numobjects rgb_label=label2rgb(label,@spring,'c','shuffle');figure,imshow(rgb_label);graindata=regionprops(label,'all');graindata

>> numdown=find([graindata.Area]<150);>> graindata(numdown,:)=[];>> numup=find([graindata.Area]>250);>> graindata(numup,:)=[];>> graindata

>> std([graindata.Area])/ mean([graindata.Area])%面積的變異系數

>> std([graindata.Eccentricity])/ mean([graindata.Eccentricity])%橢圓的變異系數

>> std([graindata.MajorAxisLength])/ mean([graindata.MajorAxisLength])>> std([graindata.MinorAxisLength])/ mean([graindata.MinorAxisLength])>> std([graindata.EquivDiameter])/ mean([graindata.EquivDiameter])%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %2006.06.06 rice的堊白度檢測 >> clear;close all;clc;>> rgb=imread('r.jpg');>> close all;>> imshow(rgb);>> i=rgb2gray(rgb);>> j=medfilt2(i,[5 5]);>> figure,imshow(i);>> figure,imshow(j);>> imhist(j,256);>> t=0.3;>> v=imadjust(j,[t 1],[],1);>> imhist(v,256);>> t_c=0.6;>> bw_v=im2bw(v,0.01);>> chalk=imadjust(v,[t_c 1],[],1);>> bw_chalk=im2bw(chalk,0.01);>> figure,imshow(v);>> figure,imshow(bw_v);>> figure,imshow(chalk);>> figure,imshow(bw_chalk);>> degree_chalkness=bwarea(bw_chalk)/bwarea(bw_v)*100 >> bw=im2bw(j,t);>> figure,imshow(bw);>> se=(ones(3,3));>> bw1=imerode(bw,se);%兩次腐蝕 >> figure,imshow(bw1);>> bw2=imerode(bw1,se);>> figure,imshow(bw2);

>> [l,num]=bwlabel(bw2);%標記腐蝕后的大米圖像 >> t_chalk=100;%設置堊白面積的下限 >> compare=(l)&(chalk>t_chalk);%>> compare=(bw2)&(bw_chalk>t_chalk);>> [r,c]=find(compare);%標記堊白米粒的位置 >> result=bwselect(l,c,r);%顯示只含有堊白米粒的圖像 >> figure,imshow(result);

>> [l_chalk,num_chalk]=bwlabel(result);%標記堊白米粒圖像,便于計數 >> rate_chalky_grains=num_chalk/num*100;>> rate_chalky_grains

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %2006.6.17 bwmorph函數 >> help bwmorph BWMORPH Perform morphological operations on binary image.BW2 = BWMORPH(BW1,OPERATION)applies a specific morphological operation to the binary image BW1.BW2 = BWMORPH(BW1,OPERATION,N)applies the operation N times.N can be Inf, in which case the operation is repeated until the image no longer changes.OPERATION is a string that can have one of these values: 'bothat' Subtract the input image from its closing 'bridge' Bridge previously unconnected pixels 'clean' Remove isolated pixels(1's surrounded by 0's)'close' Perform binary closure(dilation followed by erosion)'diag' Diagonal fill to eliminate 8-connectivity of background 'dilate' Perform dilation using the structuring element ones(3)'erode' Perform erosion using the structuring element ones(3)'fill' Fill isolated interior pixels(0's surrounded by 1's)'hbreak' Remove H-connected pixels 'majority' Set a pixel to 1 if five or more pixels in its 3-by-3 neighborhood are 1's 'open' Perform binary opening(erosion followed by dilation)'remove' Set a pixel to 0 if its 4-connected neighbors are all 1's, thus leaving only boundary pixels 'shrink' With N = Inf, shrink objects to points;shrink objects with holes to connected rings 'skel' With N = Inf, remove pixels on the boundaries of objects without allowing objects to break apart 'spur' Remove end points of lines without removing small objects completely.'thicken' With N = Inf, thicken objects by adding pixels to the exterior of objects without connected previously unconnected objects 'thin' With N = Inf, remove pixels so that an object without holes shrinks to a minimally connected stroke, and an object with holes shrinks to a ring halfway between the hold and outer boundary 'tophat' Subtract the opening from the input image

Class Support-------------The input image BW1 can be numeric or logical.It must be 2-D, real and nonsparse.The output image BW2 is logical.Examples--------BW1 = imread('circles.png');imview(BW1)BW2 = bwmorph(BW1,'remove');BW3 = bwmorph(BW1,'skel',Inf);imview(BW2)imview(BW3)

See also erode, dilate, bweuler, bwperim.Reference page in Help browser doc bwmorph

BW1 = imread('circles.png');figure,imshow(BW1)BW2 = bwmorph(BW1,'erode');figure,imshow(BW2)

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %邊界提取 b=bwmorph(bw,'remove');b=bwperim(bw,8);%又叫邊界象素測定 b=edge(bw,'canny');%又叫邊界提取 %去除孤立象素點

nosinglepixel=bwmorph(bw,'clean');%去除小面積物體

nosmall=bwareaopen(bw,CNN);%閾值處理再取反

bw=~im2bw(i,graythresh(i));

%開運算(消除小物體)與閉運算(填充物體內細小空洞)se=strel('disk',6);iopen=imopen(bw,se);iclose=imclose(bw,se);%腐蝕與膨脹聯合操作 %(1)創建結構元素 se=strel('rectangle',[40 30]);%(2)使用結構元素腐蝕圖像 bw1=imread('circbw.tif');bw2=imerode(bw1,se);imshow(bw2);%(3)逆操作,回復矩形原來大小 bw3=imdilate(bw2,se);figure,imshow(bw3);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %2006.6.18花椒子

%直接對灰度圖進行canny運算 >> i=imread('nut.bmp');>> figure,imshow(i);>> ig=rgb2gray(i);>> figure,imshow(ig);%igcanny=edge(ig,'canny');%igcfill=imfill(igcanny,'hole');igcanny_thresh=edge(ig,'canny',(graythresh(ig)*.1));igcfill=imfill(igcanny_thresh,'hole');>> figure,imshow(igcfill);

%先對灰度圖濾波,再進行canny運算

>> imed=medfilt2(ig);%中值濾波后對圖像邊界有一定的損傷!!>> imedcanny=edge(imed,'canny');>> imedfill=imfill(imedcanny,'hole');>> figure,imshow(imedfill);>> nosmall=bwareaopen(imedfill,150);>> figure,imshow(nosmall);

%注意:若對灰度圖像先拉氏銳化,在canny提取邊界,效果不大好!!%結論:無需拉氏銳化,也不必中值濾波,可直接canny提取邊界!!>> ifill=igcfill|imedfill;>> figure,imshow(ifill);>> nosmall=bwareaopen(ifill,150);>> figure,imshow(nosmall);

%當t=0.55時,閾值處理再canny運算的效果 >> imhist(ig);>> t=0.55;>> v=imadjust(ig,[0 t],[],1);>> vcanny=edge(v,'canny');>> vfill=imfill(vcanny,'hole');>> figure,imshow(vfill);>> ifill=igcfill|vfill;>> figure,imshow(ifill);>> nosmall=bwareaopen(ifill,150);>> figure,imshow(nosmall);

%當t=0.6時,閾值處理再canny運算的效果的效果 >> t=0.6;>> v=imadjust(ig,[0 t],[],1);>> vcanny=edge(v,'canny');>> vfill=imfill(vcanny,'hole');>> figure,imshow(vfill);>> ifill=igcfill|vfill;>> figure,imshow(ifill);>> nosmall=bwareaopen(ifill,150);>> figure,imshow(nosmall);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %處理花椒子

>> i=imread('nut.bmp');%figure,imshow(i);ig=rgb2gray(i);figure,imshow(ig);>> imed=medfilt2(ig);imedcanny=edge(imed,'canny');imedfill=imfill(imedcanny,'hole');%figure,imshow(imedfill);nosmall=bwareaopen(imedfill,150);>> figure,imshow(nosmall);>> [labeled,numobjects]=bwlabel(nosmall,4);>> rgb_label=label2rgb(labeled,@spring,'c','shuffle');%>> figure,imshow(rgb_label);>> nutdata=regionprops(labeled,'all');>> min([nutdata.Solidity])

>> rectangle('Position', [253.5000 207.5000 26.0000 28.0000])%畫矩形

>> rectangle('Position', [250.5000 50.5000 27.0000 26.0000])>> figure,imshow(nutdata(1).Image)%只顯示1號物體的圖像

>> figure,imshow(nutdata(1).ConvexImage)%畫出1號物體的凸多邊形 >> std([nutdata.Eccentricity])/ mean([nutdata.Eccentricity])std([nutdata.Area])/ mean([nutdata.Area])std([nutdata.Solidity])/ mean([nutdata.Solidity])>> std([nutdata.Centroid])/ mean([nutdata.Centroid])std([nutdata.MajorAxisLength])/ mean([nutdata.MajorAxisLength])std([nutdata.MinorAxisLength])/ mean([nutdata.MinorAxisLength])std([nutdata.Orientation])/ mean([nutdata.Orientation])std([nutdata.EquivDiameter])/ mean([nutdata.EquivDiameter])std([nutdata.Extent])/ mean([nutdata.Extent])std([nutdata.Extrema])/ mean([nutdata.Extrema])

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %處理花椒皮 close all;clc;clear;>> i=imread('p.bmp');imshow(i);ig=rgb2gray(i);figure,imshow(ig);imed=medfilt2(ig);imedcanny=edge(imed,'canny');figure,imshow(imedcanny);>> se90=strel('line',2,90);se0=strel('line',2,0);bwsdil=imdilate(imedcanny,[se90 se0]);figure,imshow(bwsdil),title('dilated');ifill=imfill(bwsdil,'holes');figure,imshow(ifill);>> bwero=imerode(ifill,[se90 se0]);>> figure,imshow(bwero);>> nosmall=bwareaopen(bwero,150,4);>> figure,imshow(nosmall);>> nobord=imclearborder(nosmall,4);>> figure,imshow(nobord);>> [labeled,numobjects]=bwlabel(nobord,4);>> numobjects >> pdata=regionprops(labeled,'all');>> max([pdata.Solidity])>> std([pdata.Solidity])/mean([pdata.Solidity])

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %處理混合圖像 >> clear;clc;close all;>> i=imread('m.bmp');%>> figure,imshow(i);>> ig=rgb2gray(i);figure,imshow(ig);imed=medfilt2(ig);%>> figure,imshow(imed);imedcanny=edge(imed,'canny');%>> figure,imshow(imedcanny);>> se90=strel('line',2,90);se0=strel('line',2,0);bwsdil=imdilate(imedcanny,[se90 se0]);%figure,imshow(bwsdil),title('dilated');ifill=imfill(bwsdil,'holes');%figure,imshow(ifill);bwero=imerode(ifill,[se90 se0]);%figure,imshow(bwero);>> nosmall=bwareaopen(bwero,150,4);%figure,imshow(nosmall);nobord=imclearborder(nosmall,4);figure,imshow(nobord);>> [labeled,numobjects]=bwlabel(nobord,4);>> numobjects >> rgb_label=label2rgb(labeled,@spring,'c','shuffle');figure,imshow(rgb_label);>> mexdata=regionprops(labeled,'all');hold on;%以下內容畫在同一figure中 centr=[mexdata.Centroid];%尋找重心位置 nums=1:numobjects;for k = 1:numobjects soli=mexdata(k).Solidity;soli_string=sprintf('%2.2f',soli);%等價于轉字符串 % signal=num2str(nums(k));signal=sprintf('%d',k);%直接使用打印語句打印序號 text(centr(2*k-1),centr(2*k),signal)%按序標記物體

text(centr(2*k-1)-30,centr(2*k)-30,soli_string)%標注每個Solidity值 end

for k=1:numobjects plot(mexdata(k).ConvexHull(:,1),mexdata(k).ConvexHull(:,2),...'b','Linewidth',2)end

%畫出1和2號物體的外接矩形

%>> rectangle('position',[9.5000 224.5000 62.0000 63.0000])%>> rectangle('position',[65.5000 141.5000 34.0000 39.0000])%畫出每個物體的外接矩形 bb=[mexdata.BoundingBox];for k=1:numobjects rectangle('position',[bb(4*k-3)bb(4*k-2)bb(4*k-1)bb(4*k)])end

%>> figure,imshow(mexdata(1).Image)%只顯示1號物體的圖像

%>> figure,imshow(mexdata(1).ConvexImage)%畫出1號物體的凸多邊形 %>> figure,imshow(mexdata(2).Image)%只顯示2號物體的圖像

%>> figure,imshow(mexdata(2).ConvexImage)%畫出2號物體的凸多邊形 %畫出單個物體的凸多邊形的填充圖形 for k=1:numobjects figure,imshow(mexdata(k).ConvexImage)end

%只顯示Solidity>0.92的物體的圖像 >> idx = find([mexdata.Solidity] > 0.92);>> BW2 = ismember(labeled,idx);>> figure,imshow(BW2)

>> mexdata=regionprops(labeled,'all');>> %只顯示Solidity<0.92的物體的圖像 idx = find([mexdata.Solidity] < 0.92);bw2 = ismember(labeled,idx);figure,imshow(bw2)%mexdata.Solidity;

>> numdown=find([mexdata.Solidity]<0.92);mexdata(numdown,:)=[];>> mexdata

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %2006.6.19 %roipoly函數的用法 I = imread('eight.tif');c = [222 272 300 270 221 194];r = [21 21 75 121 121 75];BW = roipoly(I,c,r);imview(I), imview(BW)

%可以使用下面的方法創建相應的向量: regionprops(L,'Area');allArea = [stats.Area];

%創建一個只包含面積大于80的二值圖像 idx = find([stats.Area] > 80);BW2 = ismember(L,idx);

%只顯示某個下標所對應的物體圖像 bw2=ismember(L,N);figure,imshow(bw2);

%在調用regionprops之前必須將二值圖像轉變為標注矩陣 L = bwlabel(BW);%或者

L = double(BW);

%將matlab數據寫到excel中 a=ones(3);success = xlswrite('c:/matlab/work/myworkbook.xls',a,'A2:C4')%將行矩陣轉換為列矩陣 a=[1 2 3 4 5 6];b=transpose(a);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %2006.6.22球形物體的檢測和標識(循環檢測和標識算法)clc;clear;close all;%Step 1: Read image %Step 2: Threshold the image %Step 3: Remove the noise %Step 4: Find the boundaries %Step 5: Determine which objects are round >> RGB = imread('pillsetc.png');imshow(RGB)>> I = rgb2gray(RGB);threshold = graythresh(I);bw = im2bw(I,threshold);imshow(bw)>> % remove all object containing fewer than 30 pixels bw = bwareaopen(bw,30);>> figure,imshow(bw)>> % fill a gap in the pen's cap se = strel('disk',2);bw = imclose(bw,se);>> figure,imshow(bw)>> % fill any holes, so that regionprops can be used to estimate % the area enclosed by each of the boundaries bw = imfill(bw,'holes');>> figure,imshow(bw)>> [B,L] = bwboundaries(bw,'noholes');>> % Display the label matrix and draw each boundary figure,imshow(label2rgb(L, @jet, [.5.5.5]))>> hold on for k = 1:length(B)boundary = B{k};plot(boundary(:,2), boundary(:,1), 'w', 'LineWidth', 2)end >> stats = regionprops(L,'Area','Centroid');>> stats = regionprops(L,'Area','Centroid');threshold = 0.94;% loop over the boundaries for k = 1:length(B)% obtain(X,Y)boundary coordinates corresponding to label 'k' boundary = B{k};% compute a simple estimate of the object's perimeter delta_sq = diff(boundary).^2;perimeter = sum(sqrt(sum(delta_sq,2)));

% obtain the area calculation corresponding to label 'k' area = stats(k).Area;

% compute the roundness metric metric = 4*pi*area/perimeter^2;

% display the results metric_string = sprintf('%2.2f',metric);% mark objects above the threshold with a black circle if metric > threshold centroid = stats(k).Centroid;plot(centroid(1),centroid(2),'ko');end

text(boundary(1,2)-35,boundary(1,1)+13,metric_string,'Color','y',...'FontSize',14,'FontWeight','bold');end >> title(['Metrics closer to 1 indicate that ',...'the object is approximately round']);

第四篇:MATLAB實訓小結

實訓小結

為期一周的MATLAB實訓在學習與忙碌中度過了,時間雖短,但我們卻真真切切的學到了知識,在現實工作中可以運用的知識。

在第一節課,我們便了解到MATLAB是世界上最流行的、應用最廣泛的工程計算和仿真軟件,它將計算、可視化和編程等功能同時集于一個易于開發的環境。MATLAB主要應用于數學計算、系統建模與仿真、數學分析與可視化、科學與工程繪圖和用戶界面設計等。對MATLAB的系統結構和特點等,老師也向我們做出了大致的講解,同時,我們知道了MATLAB程序的一些最基本的應用和運算,并能夠進行一些簡單的編程。就這樣,實訓的第一天大家都在期待和興奮中度過。

接下來的時間,主要是以大家自學和練習為主,老師進行輔導和考察。在學習過程中,不懂的可以相互之間小聲的討論,也可向老師請教,但必須確保自己真正學到了知識,認真的看書并進行編程練習。一天的學習接近尾聲時,就是老師考察大家一天的收獲的時候了,老師總會出一些小題目讓大家編出它的程序,雖然有的題目對我們來說還是有些難度的,但是在老師的指點下我們還是編出程序的,當我們看到自己編的程序運行正確時,總是會萬分的興奮,充滿成就感。

就這樣,僅僅一個星期的實訓就結束了,雖然不能十分熟悉和運用MATLAB的所有程序,但是我們卻打下了一定的基礎,在以后,當我們真正開始深入學習這門學問時,我們對它將不會再那么陌生,學起來也將輕松許多。這次實訓為我們提供了一個很好的學習機會,唯一不足的就是時間有點短,我們不能在這段時間里學到更多的知識,因此,在這一周打下的基礎上,我們需要用自己的努力去自學,以獲取更多的知識。

知識是無窮無盡的,知識的獲取需要一顆上進的心,老師將我們領進了門,下面的路就應該我們自己去走,即是充滿荊棘,也要努力奮斗往前沖。

第五篇:MatLab基礎知識小結來源

MatLab基礎知識小結來源: 吳學簫的日志

matlab常用到的永久變量。ans:計算結果的默認變量名。i j:基本虛數單位。

eps:系統的浮點(F10a9Bg個oht): inf: 無限大,例1/0 nan NaN:非數值(N航a nmnb謝)pi:圓周率n(n=3.1415926..)。realmax:系統所能表示的最大數值。realmin: 系統所能表示的最小數值,nargin: 函數的輸入參數個數: nargout:函數的輸出多數個數

①matlab的所有運算都定義在復數城上。對于方根問題運算只返回處于第一象限的解。

⑦matlab分別用左斜/和右來表示“左除和“右除”運算。對于標量運算而言,這兩者的作用沒有區別:但對于矩陣運算來說,二者將產生不同的結果。

多項式的表示方法和運算

p(x)=x^3-3x-5 可以表示為p=[1 0 –3 5],求x=5時的值用plotval(p,5)也可以求向量:a=[3 4 5],plotval(p,a)函數roots求多項式的根 roots(p)p=[1 0-3 5];r=roots(p)由根重組多項式poly(根)q=poly(r)real(q)有時會產生虛根,這時用real抽取實根即可 conv(a,b)函數 多項式乘法(執行兩個數組的卷積)a=[1 2 3 4];b=[1 4 9 16];c=conv(a,b)多項式的加減法,低階的多項式必須用首零填補,使其與高階多項式有同樣的階次 多項式除法 [q , r]=deconv(c , b)表示b/c q為商多項式,r為余數 多項式的導數 polyder(f)f=[ 2 4 5 6 2 1];s=polyder(f)

多項式的曲線擬合 x=[1 2 3 4 5];y=[5.6 40 150 250 498.9];p=polyfit(x,y,n)數據的n次多項式擬合 poly:矩陣的特征多項式、根集對應的多項式 x2=1:0.1:5;n取1時,即為最小二乘法

y2=polyval(p,x2);計算多項式的值(polyvalm計算矩陣多項式)plot(x,y,'*',x2,y2);grid on 最小二乘法 x=[1 2 3 4 5];y=[5.6 40 150 250 498.9];plot(x,y,’*’),lsline

多項式插值(p158)

YI=interp1(x,y,XI,’method’)一維插值

(XI為插值點的自變量坐標向量,可以為數組或單個數。method為選擇插值算法的方法,包括: linear(線性插值)cubic(立方插值)spline(三次樣條插值)nearst(最近臨插值)

例如:人口預測 year=1900:10:1900;number=[78 91 105 ?.每十年的人口數];x=1900:1:2000;y=interp1(year,number,x,’spline’);plot(year,numeber,’*’,x,y);grid on

一維博里葉變換插值使用函數interpft實現,計算含有周期函數值的矢量的傅里葉變換

然后使用更多的點進行傅里葉變換的逆變換,函數的使用格式如下:y=interpft(x,n)其中x是含有周期函數值的矢量,并為等距的點,n為返同等間距點的個數。

求解一元函數的最小值

y=fminbnd('humps',0.3,1)humps為一內置函數 求解多元函數的最小值

函數fminserch用于求多元函數的最小值。它可以指定一個開始的矢量,并非指定一個區間。此函數返回一個矢量為此多元函數局部最小函數值對應的自變量

紋理成圖功能

由warp函數的紋理成圖功能實現平面圖像在空間三維曲面上的顯示。將文件名為flowers.tif的圖像分別投影到圓柱形和球星表面上 i=imread('flowers.tif');[x,y,z]=cylinder;subplot(1,2,1),warp(x,y,z,i);[x,y,z]=sphere(50);subplot(1,2,2),warp(x,y,z,i);warp(x,y,z,i);求函數的零點

求函數humps在[1,2]區間上的零點 fzero(‘humps’,[1,2]);也可以給一個初始值 fzero(‘humps’,0.9);對于多項式可直接由roots求其根 roots(‘4*x^3+……’);也可以用solve c=sym('c','real');x=sym('x','real');s=solve(x^3-x+c)

函數定積分

q=quadl(‘humps’,0,1)求humps函數在0 1區間上的定積分,也可以用quad語句

二重積分 首先計算內積分,然后借助內積分的中間結果再求出二重積分的值,類似于積分中的分步積分法。Result=dblquad(‘integrnd’,xin,xmax.,ymin,ymax)integrnd為被積函數的名稱字符串

符號積分運算int(f)最精確的是符號積分法 計算s=∫12[∫01xydx]dy syms x y 中間為空格,不能為逗號

s=int(int(‘x^y’,’x’,0,1),’y’,1,2)引號可省略 vpa(s)顯示s的值 內積分限為函數的二重積分 I=∫14[∫√y2(x2+y2)dx]dy 符號法I=vpa(int(int(‘x^2+y^2’,’x’,sqrt(y),2),’y’,1,4)

微分運算(diff)

微分是描述一個函數在一點處的斜率,是函數的微觀性質、因此積分對函數的形狀在小范圍內的改變不敏感,而微分很敏感。—個函數的小的變化,容易產生相鄰點的斜率的大的改變。由干微分這個固有的困難.所以盡可能避免數值微分.特別是對實驗獲得的數據進行微分。在這種情況,最好用最小二乘曲線擬合這種數據,然后對所得到的多項式進行微分;或用另一種方法對點數據進行三次樣條擬合,然后尋找樣條微分,但是,有時微分運算是不能避免的,在MATLAB中.用函數diff汁算一個矢量或者矩陣的微分(也可以理解為差分)。

a=[1 2 3 3 3 7 8 9];b=diff(a)一次微分 bb=diff(a,2)二次微分

實際上diff(a)=[a(2)-a(1),a(3)-a(2),??,a(n)-a(n-1)] 對于求矩陣的微分,即為求各列矢量的微分,從矢量的微分值可以判斷矢量的單調性、是否等間距以及是否有重復的元素。符號微分運算(diff)syms x t a f =cos(a*x)df =diff(f)由findsym的規則,隱式的指定對x進行微分 dfa=diff(f,'a')指定對變量a進行微分 dfa=diff(f,'a',3)三次微分 diff函數不僅作用在標量上,還可以在矩陣上,運算規則就是按矩陣的元素分別進行微分 syms a x A=[cos(a*x),sin(a*x),-sin(a*x),cos(a*x)];dA=diff(A)微分方程dsolve 在matlab中,符號表達式中包含字母D用來表示微分運算,D2,D3分別對應第二,第三階導數,D2y表示d2y/dt2 把t缺省了

y=dsolve(‘Dy=f(y)’)單個方程,單個輸出

[u,v]=dsolve(‘Du=f(u,v)’,’Dv=g(u,v)’)2個方程,2個輸出 s=dsolve(‘Dx=f(x,y,z)’,’Dy=g(x,y,z)’,’Dz=k(x,y,z)’)s.x s.y s.z 3個方程,架構數組

dsolve('Dx=-a*x')結果:C1*exp(-a*t)沒給定初值,所以結果中含參變量 x=dsolve('Dx=-a*x','x(0)=1','s')結果exp(-a*s)給定了初值,獨立變量設為s 計算多元函數的梯度

fx=gradient(f)f是一個矢量返回f的一維數值梯度,fx對應于x方向的微分。

[x,y]=meshgrid(-2:.2:2,-2:.2:2);z=x.*exp(-x.^2-y.^2);[px,py]=gradient(z,.2,.2);contour(z),hold on 畫等值線 quiver(px,py)

matlab字符串運算 利用sym命令創建表達式

f=sym(‘cos(x)+sin(x)’)或 syms x , f=cos(x)+sin(x)diff(f)求其導數

(也可直接用命令f=diff(‘cos(x)+cos(y)’)

當字符表達式中含有多于一個的變量時,只有—個變量是獨立變量。如果不告訴matlab哪一個變量是獨立變量,則可以通過findsym命令詢問 利用findsym命令查詢獨立變量 f=sym('sin(a*x)+b')findsym(f,1)給出獨立變量(一個變量,如果為2則給出2個變量)findsym(f)給出所有變量

符號表達式的化簡和替換

collect函數 collect(f,v)表示將f表示為關于符號變量v的多項式形式,即關于v合并同類項,v缺省,則用findsym確定的缺省變量 syms x y f=x^2*y+y*x-x^2-2*x+1 collect(f)得到(-1+y)*x^2+(y-2)*x+1 collect(f,y)得到(x+x^2)*y+1-x^2-2*x expand函數 expand(f)將f展開,寫成和的形式 syms x expand((x-1)^3)得到x^3-3*x^2+3*x-1 horner函數 horner(f)將f寫成鑲嵌套形式 syms x horner(x^3-6*x^2)得到(-6+x)*x^2 factor函數 factor(f)將f轉換成低階有理多項式的乘積 syms x f=x^3-6*x^2+11*x-6 factor(f)得到(x-1)*(x-2)*(x-3)simplify(f)函數 綜合化簡 simple(f)函數的最簡形式 syms x f=2*sin(x^2)+cos(3*x)simple(f)如果不想看到中間過程,可z=simple(f)有時使用兩次simple命令可以得到最簡式 如果想知道哪個簡化命令得到最后結果,可以加一個參數how [z,how]=simple(f)

符號表達式的替換 subs(f,new,old)f='a*x^2+b*x+c' subs(f,'t','x')得到a*(t)^2+b*(t)+c subs是一個符號函數,返回一個符號變量

subexpr函數 有時matlab返回的符號表達式難以理解,用subexpr函數,可以將表達式中重復出現的子式用一個符號表示,從而簡化表達形式 c=sym('c','real');x=sym('x','real');s=solve(x^3-x+c)a=subexpr(s)得到sigma =-108*c+12*(-12+81*c^2)^(1/2)a =

[ 1/6*sigma^(1/3)+2/sigma^(1/3)] [-1/12*sigma^(1/3)-1/sigma^(1/3)+1/2*i*3^(1/2)*(1/6*sigma^(1/3)-2/sigma^(1/3))] [-1/12*sigma^(1/3)-1/sigma^(1/3)-1/2*i*3^(1/2)*(1/6*sigma^(1/3)-2/sigma^(1/3))]

pretty函數有時也能起到同樣的作用。Pretty(f)顯示函數的習慣書寫形式

線性方程組的求解

求解線性方程組,用反斜杠 a=hilb(3)b=[1 2 3]' ab

矩陣的特征值和特征向量

用eig(v,d)函數,[v,d]=eig(A);其中d將返回特征值,v返回相應的特征向量,缺省第二個參數將只返回特征值

syms a b c real A=[a b c;b c a;c a b];[v,d]=eig(A);

為了觀察更清楚,使用以前學過的替換函數,這里不用默認的sigma,而改用M,顯式的代替繁瑣的表達子式

vv=subexpr(v);vs=subs(vv,'m','sigma')運行結果為 vs =

[ 1, 1, 1] [-(c+(m)-a)/(c-b),-(c-(m)-a)/(c-b), 1] [-(a-(m)-b)/(c-b),-(a+(m)-b)/(c-b), 1]

再用m替換d中的表達子式 dd=subexpr(d);ds=subs(dd,’m’,’sigma’)運行結果為ds =

[(m), 0, 0] [ 0,-(m), 0] [ 0, 0, c+a+b] note 求特征值也可用以下命令

f=poly(A)poly函數 用來求A的特征多項式 d=solve(f)solve(f)函數用來求多項式的解

svd()函數 求矩陣的奇異值分解,將矩陣分解為兩個正交矩陣和對角矩陣的乘積 a=sym(hilb(2))[u,s,v]=svd(a)

代數方程和方程組

代數方程的求解可用solve(f)命令,如果f不含=,matlab將給表達式置零。方程的未知量在默認的情況下由findsym決定或顯式指出 syms a b c x solve(a*x^2+b*x+c)以x為默認變量 solve(a*x^2+b*x+c,a)指定對a為變量 求含有等號的方程的解(一定要加單引號)f=solve(‘cos(x)=sin(x)’)

x=solve('exp(x)=tan(x)')如果不能求得符號解,就計算可變精度解。求解方程組與單方程類似 解一個三元一次方程

v=solve('a*u^2+v^2','u-v=1','a^2-5*a+6')結果為v =

a: [4x1 sym] u: [4x1 sym] v: [4x1 sym] 一些常用的符號運算 極限運算limit limit(f)求x到0的極限

limit(f,x,a)或limit(f,a)求x到a的極限

limit(f,a,’left’)limit(f,a,’right’)求x到a的左極限和右極限 limit(f,inf)求x趨于無窮的極限 符號求和symsum(s)symsum(s)以默認的findsym決定的變量求和 symsum(s,v)以s中指定的變量v求和

symsum(s,a,b)symsum(s,v,a,b)從a到b的有限項求和 syms k n symsum(k)從0到k求和

symsum(k,0,n-1)從0到n-1求和 symsum(1/k^2,1,inf)無限項求和 泰勒級數taylor(f)taylor(f)表示求f的5階talor展開,可以增加參數指定展開的階數(默認式5),也可以對于多元函數指定展開的變量,還可以指定在哪個點展開 syms x t taylor(exp(-x))taylor(log(x),6,1)在1點的6階taylor展開 taylor(x^t,3,t)對t的3階taylor展開 積分變換

fourier變換和逆變換fourier(f)

fourier分析可以將信號轉換為不同頻率的正弦曲線。可對離散數據進行分析,也可對連續時間系統進行分析,特別在信號和圖形處理領域。離散變換(DFT)作用于有限數據的采集,最有效的是快速fourier變換(FFT)

F=fourier(f)獨立變量x,返回關于參數w的函數 F=fourier(f,v)返回函數F關于符號對象v的函數

F=fourier(f,u,v)對關于u的函數f進行變換,而不是缺省的w,返回函數F是關于v的函數 syms t v w x fourier(1/t)fourier(exp(-t)*sym('Heaviside(t)'),v)fourier(diff(sym('F(x)')),x,w)Fourier逆變換

f=ifourier(F)缺省獨立變量w,返回關于x的函數對w進行積分 f=ifourier(F,v)返回函數f是關于符號對象v的函數,而不是缺省的x f=ifourier(F,u,v)是關于u的函數f進行變換,而不是缺省的x,返回函數f是關于v的函數 Laplace變換和逆變換laplace(f)應用于連續系統(微分方程)中,可以用來求解微分方程的初值問題 laplace(F)缺省獨立變量t,缺省返回關于s的函數L laplace(F,t)返回關于t的函數L,而不是缺省的s laplace(F,w,z)對函數F的自變量w積分,返回關于z的函數L 逆變換

F=ilaplace(L)缺省獨立變量s,返回關于t的函數F F=ilaplace(L,y)返回關于y的函數F,而不是缺省的t F=ilaplace(L,y,x)對函數L的自變量y積分,返回關于x的函數F Z-變換和逆變換ztrans(f)標量符號f的Z-變換 F=ztrans(f)缺省獨立變量n,返回關于z的函數

F=ztrans(f,w)返回關于符號變量w的函數F,而不是缺省的z F=ztrans(f,k,w)關于k的符號變量作Z-變換返回關于符號變量w的函數 逆變換iztrans(F)f=iztrans(F)或(F,k)或(F,w,k)

符號繪圖函數

符號函數簡易繪圖函數ezplot(f)f可以包含單個符號變量x的字符串或表達式,默認畫圖區間(-2pi,2pi),如果f包含x和y,畫出的圖像是f(x,y)=0的圖像,缺省區間是-2pi

Ezplot(f,xmin,xmax)或ezplot(f,[xmin,xmax])繪制在xmin

[x,y]=fplot(fun,lims,…)只返回用來繪圖的點,并不繪圖,可以自己調用plot(x,y)來繪制圖形。syms x subplot(2,2,1),fplot('humps',[0,1])f='abs(exp(x*(0:9))*ones(10,1))' subplot(2,2,2),fplot(f,[0,2*pi])subplot(2,2,3),fplot('sin(1./x)',[0.01,0.1],1e-3)matlab繪圖 二維圖形的繪制

plot 在(x,y)坐標下繪制二維圖像 支持多個x-y二元結構 plot3 在(x,y,z)坐標下繪制三維圖形 loglog 在(x,y)對數坐標下繪制二維圖形

semilogx 在x為對數坐標,y為線性坐標的二維坐標中繪圖 semilogy 在x為線性坐標,y為對數坐標的二維坐標中繪圖 plotyy 在有兩個y軸的坐標下繪圖

plot用法

plot(x,y,'--rs','linewidth',2,'markeredgecolor','k',...'markerfacecolor','g','markersize',10)plotyy用法

plotyy(x1,y1,x2,y2)以x1為標準,左軸為y軸繪制y1向量,x2為基準,右軸為y軸,繪制y2向量 plotyy(x1,y1,x2,y2,fun)用字符串fun指定的繪圖函數(plot ,semilogx,semilogy,loglog,stem)plotyy((x1,y1,x2,y2,fun1,fun2)t=0:pi/20:2*pi;y=exp(sin(t));plotyy(t,y,t,y,'plot','stem')stem為二維桿圖

[ax,h1,h2]=plotyy(?)返回左右兩y軸的句柄(分別為ax(1)ax(2),以及在兩坐標軸中生成的圖形對象的句柄,分別為h1 h2 t=0:900;A=1000;a=0.005;b=0.005;z2=cos(b*t);z1=A*exp(-a*t);[haxes,hline1,hline2]=plotyy(t,z1,t,z2,'semilogy','plot');axes(haxes(1))ylabel('semilog plot')對數坐標 axes(haxes(2))ylabel('linear plot')set(hline2,'linestyle','--')其他二維圖形繪圖指令 bar(x,y)二維條形圖 hist(y,n)直方圖

histfit(y,n)帶擬和線的直方圖,n為直方的個數 stem(x,y)火柴桿圖 comet(x,y)彗星狀軌跡圖 compass(x,y)羅盤圖 errorbar(x,y,l,u)誤差限圖 feather(x,y)羽毛狀圖

fill(x,y,’r’)二維填充函數 以紅色填充 pie(x)餅圖

polar(t,r)極坐標圖 r為幅值向量,t為角度向量 t=0:0.1:8*pi;r=cos(3*t/2)+1/2;polar(t,r),xlabel('polar 指令')quiver(x,y)磁力線圖 stairs(x,y)階梯圖 loglog(x,y)對數圖

semilogx semilogy 半對數圖

matlab三維作圖 plot3(x,y,z)三維線條圖 t=0:pi/50:15*pi;plot3(sin(t),cos(t),t,'r*')與plot相似 v=axis 返回各個軸的范圍

text(0,0,0,'origin')在某個坐標點加入文字

plot3 增加維數可以一次畫多個圖,使所個二維圖形眼一個軸排列

三維網線圖的繪制 mesh(x,y,z)網格圖

mesh(x,y,z,c)四維作圖,(x,y,z)代表空間三維,c代表顏色維 mesh(…,’property name’,property value,…)設置曲面各屬性的值 [x,y,z]=sphere(12);mesh(x,y,z),hidden off 曲面設置為透明 meshc(x,y,z)畫網格圖和基本的等值線圖 meshz(x,y,z)畫包含零平面的網格圖

waterfall(x,y,z)與mesh一樣,只是在效果上它的網格線只在x軸一個方向出現,呈瀑布狀水線 兩個變量的標量指令meshgrid(x)或meshgrid(x,y)(p179)將兩個一維向量生成兩個二維向量,以便進行z=f(x,y)運算,算出z的所有值,z為x y的標量指令 [X,Y]=meshgrid(x)meshgrid(x,x)的簡略式 [X,Y]=meshgrid(x,y)[X,Y,Z]=meshgrid(x,y,z)用于三維圖形的繪制 [x,y]=meshgrid([-2:0.1:2]);z=x.*exp(-x.^2-y.^2);plot3(x,y,z)surf(x,y,z,c)著色表面圖 surf(x,y,z)隱含著c=z surf(z)隱含著x,y的值為surf指令根據z的尺寸自動生成 surfc 畫出具有基本等值線的曲面圖 surfl 畫出一個具有亮度的曲面圖

shading flat 網線圖的某整條線段或曲面圖的某個貼片都著一種顏色

shading interp 某一線段或貼片上各點的顏色由線或片的頂端顏色經線性插值而得 曲面圖不能設成網格圖那樣透明,但需要時,可以在孔洞處將數據設成nun

等高線的繪制

在二維空間繪制等高線contour contour(x,y,z,n)繪制n條等值線(n可省略)

contour(x,y,z,v)在向量v所指定的高度上繪制等高線(可省)c=contour(x,y,z)計算等值線的高度值

c=contourc(x,y,z,n)計算n條等高線的x-y坐標數據

c=contourc(x,y,z,v)計算向量v所指定的等高線的x-y坐標數據 clabel(c)給c陣所表示的等高線加注高度標識 clabel(c,v)給向量v所指定的等高線加注高度標識 clabel(c,’manual’)借助鼠標給點中的等高線加注高度標識 三維空間繪制等高線contour3(x,y,z)[x,y,z]=peaks(30);contour3(x,y,z,16,'g')二元函數的偽彩圖pcolor(x,y,z)是指令surf的二維等效指令,代表偽彩色,可與contour單色等值線結合畫彩色等值線圖 [x,y,z]=peaks(30);pcolor(x,y,z);偽彩色 shading interp 顏色插值,使顏色平均漸變 hold on,contour(x,y,z,20,'k')...畫等值線 colorbar('horiz')水平顏色標尺 c=contour(x,y,z,8);clabel(c)標注等高線 矢量場圖(速度圖)quiver 用于描述函數z=f(x,y)在點(x,y)的梯度大小和方向 [X,Y]=meshgrid(x,y)X,Y為Z陣元素的坐標矩陣

[U,V]=gradient(Z,dx,dy)U,V分別為Z對x對y的導數,dx dy是x y方向上的計算步長

quiver(X,Y,U,V,s,’linespec’,’filled’)U,V為必選項,決定矢量場圖中各矢量的大小和方向,s為指定所畫箭頭的大小,缺省時取1,linespec為字符串,指定合法的線形和彩色,filled用于填充定義的繪圖標識符 [x,y]=meshgrid(-2:.2:2,-1:.15:1);z=x.*exp(-y.^2);[px,py]=gradient(z,.2,.15);contour(x,y,z);hold on,quiver(x,y,px,py),axis image 多邊形的填色fill(x,y,c)c定義顏色字符串,可以是’r’,’b’等,也可以用RGB三色表示[r,g,b]值為0-1 圖形的四維表現

matlab常用到的永久變量。

ans:計算結果的默認變量名。i j:基本虛數單位。

eps:系統的浮點(F10a9Bg個oht): inf: 無限大,例1/0 nan NaN:非數值(N航a nmnb謝)pi:圓周率n(n=3.1415926..)。realmax:系統所能表示的最大數值。realmin: 系統所能表示的最小數值,nargin: 函數的輸入參數個數: nargout:函數的輸出多數個數

①matlab的所有運算都定義在復數城上。對于方根問題運算只返回處于第一象限的解。

⑦matlab分別用左斜/和右來表示“左除和“右除”運算。對于標量運算而言,這兩者的作用沒有區別:但對于矩陣運算來說,二者將產生不同的結果。多項式的表示方法和運算

p(x)=x^3-3x-5 可以表示為p=[1 0 –3 5],求x=5時的值用plotval(p,5)也可以求向量:a=[3 4 5],plotval(p,a)函數roots求多項式的根 roots(p)p=[1 0-3 5];r=roots(p)由根重組多項式poly(根)q=poly(r)real(q)有時會產生虛根,這時用real抽取實根即可 conv(a,b)函數

多項式乘法(執行兩個數組的卷積)a=[1 2 3 4];b=[1 4 9 16];c=conv(a,b)多項式的加減法,低階的多項式必須用首零填補,使其與高階多項式有同樣的階次 多項式除法 [q , r]=deconv(c , b)表示b/c q為商多項式,r為余數 多項式的導數 polyder(f)f=[ 2 4 5 6 2 1];s=polyder(f)MATLAB常用的基本數學函數 abs(x):純量的絕對值或向量的長度

angle(z):復 數z的相角(Phase angle)

sqrt(x):開平方

real(z):復數z的實部imag(z):復數z的虛 部

conj(z):復數z的共軛復數 round(x):四舍五入至最近整數 fix(x):無論正負,舍去小數至最近整數 floor(x):地板函數,即舍去正小數至最近整數 ceil(x):天花板函數,即加入正小數至最近整數 rat(x):將實數x化為分數表示 rats(x):將實數x化為多項分數展開 sign(x):符號函數(Signum function)。

當x<0時,sign(x)=-1;

當x=0時,sign(x)=0;當x>0時,sign(x)=1。

> 小整理:MATLAB常用的三角函數 sin(x):正弦函數 cos(x):馀弦函數 tan(x):正切函數 asin(x):反正弦函數 acos(x):反馀弦函數 atan(x):反正切函數

atan2(x,y):四象限的反正切函數 sinh(x):超越正弦函數 cosh(x):超越馀弦函數 tanh(x):超越正切函數 asinh(x):反超越正弦函數 acosh(x):反超越馀弦函數 atanh(x):反超越正切函數

變數也可用來存放向量或矩陣,并進行各種運算

若要輸入矩陣,則必須在每一列結尾加上分號(;),如下例:

A = [1 2 3 4;5 6 7 8;9 10 11 12];

下載MatLab 知識小結word格式文檔
下載MatLab 知識小結.doc
將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
點此處下載文檔

文檔為doc格式


聲明:本文內容由互聯網用戶自發貢獻自行上傳,本網站不擁有所有權,未作人工編輯處理,也不承擔相關法律責任。如果您發現有涉嫌版權的內容,歡迎發送郵件至:645879355@qq.com 進行舉報,并提供相關證據,工作人員會在5個工作日內聯系你,一經查實,本站將立刻刪除涉嫌侵權內容。

相關范文推薦

    matlab的nntool工具箱小結

    擬合以及插值還有逼近是數值分析的三大基礎工具,通俗意義上它們的區別在于:擬合是已知點列,從整體上靠近它們;插值是已知點列并且完全經過點列;逼近是已知曲線,或者點列,通過逼近使......

    MATLAB小波函數小結(小編整理)

    通用函數函數 含義Allnodes 計算樹結點appcoef 提取一維小波變換低頻系數appcoef2 提取二維小波分解低頻系數 bestlevt 計算完整最佳小波包樹besttree 計算最佳(優)樹* bio......

    MATLAB實驗小結論文 數學建模

    數學建模論文題 目 求π的近似值的數學建模問題 學 院 材料科學與工程 專業班級 學生姓名 成 績 年 05 月 20 MATLAB 2010 日 摘要 這個學期,我們開了MATLAB的課程,因為是......

    matlab作業題

    第一章 MATLAB環境 1、MATLAB通用操作界面窗口包括哪些?命令窗口、歷史命令窗口、當前目錄窗口、工作空間窗口各有哪些功能? 答:MATLAB通用操作界面窗口包括:命令窗口、歷史命令......

    Matlab心得體會

    Matlab心得體會 10金融3 呂淼 2010241125 在為學習這門課前就聽說了他的強大,因為現在的經濟模型都是需要這些分析軟件的,也曾聽說金融的未來方向是需要數學等等作為依托的。......

    Matlab心得體會

    Matlab心得體會 10金融3 呂淼 2010241125 在為學習這門課前就聽說了他的強大,因為現在的經濟模型都是需要這些分析軟件的,也曾聽說金融的未來方向是需要數學等等作為依托的。......

    matlab學習心得[最終定稿]

    學習MATLAB 感想 學習了 MATLAB 這門課程,我了解該軟件的基本功能,也知道 了該軟件在我們生活中的重要地位。隨著社會的不斷發展,科技 的不斷進步,計算機的普及,它也被應用在越......

    MATLAB論文

    MATLAB與在信號與系統中的應用 姓名:江肥 班級:*** 學號:*** 摘要:論文通過MATLAB在信號與系統中的應用實例,探討了MATLAB在信號與系統中的應用方法和技巧,對運用計算機軟件完成......

主站蜘蛛池模板: 无码福利一区二区三区| 成人网站免费大全日韩国产| 日韩精品区一区二区三vr| 亚洲欧美综合人成在线| 亚洲av永久无码一区| 国产精品无需播放器在线观看| 国产亚洲曝欧美精品手机在线| www国产成人免费观看视频| 人人妻人人澡人人爽精品欧美| 新普新京亚洲欧美日韩国产| 中文字字幕在线中文无码| 亚洲中文无码av永久伊人| 亚洲色欲色欲www在线观看| 麻豆蜜桃av蜜臀av色欲av| 国产国产成年年人免费看片| 国产成人亚洲精品狼色在线| 50岁熟妇的呻吟声对白| 亚洲精品久久久无码av片软件| 成年无码动漫av片在线尤物网站| 青青草原精品99久久精品66| 国产尤物精品视频| 大地资源中文第三页| 成av人电影在线观看| 亚洲熟女中文字幕男人总站| 玖玖玖香蕉精品视频在线观看| 中文字幕乱码无码人妻系列蜜桃| 人人妻一区二区三区| 激情综合色五月丁香六月欧美| 蜜臀亚洲av无码精品国产午夜.| 极品少妇hdxx麻豆hdxx| 成 人 在 线 免费观看| 上司揉捏人妻丰满双乳电影| 色欲av久久综合人妻无码| 亚洲最大的熟女水蜜桃av网站| 国产精品爽爽久久久久久竹菊| 成人做爰免费视频免费看| 亚洲日本在线在线看片4k超清| 久久99国产精品久久| 无码人妻精品一区二区三区免费| 亚洲国产成人久久一区| 国产精品嫩草久久久久|