matlab常用函數函數總結: (1)mod(,);
rem(,);(正負——mod同前,rem同后); (2)sin();cos();sind();cosd(); (3)A\b;inv(A);find(); (4)double();abs(); (5)zeros(,);ones(,);eye(,);rand(,);randn(,); (6)匿名函數語法:函數名 = @(參數列表)函數體; (7)plot();polar();plot3();ezplot();
meshgrid();mesh();surf(); (8)max();min();
sum();prod();cumsum();cumprod();
mean();median();std();corrcoef();sort();
conv();deconv();polyder();polyval();polyvalm();polyfit();
poly();roots();
interp1();interp2(); (9)diff();
integral();integral2();integral3(); (10)fzero();fsolve();
fminbnd();fminsearch();fmincon();
linprog();bintprog();
ode23();ode45(); (11)sym();syms;
numden();factors();expand();collect();simplify();eval();poly2sum();sum2poly();
limit();diff();int();symsum();taylor();
solve();dsolve();
第二章.數據及其運算
1.mod(x,y),rem(x,y);mod是和y的正負保持一致,rem是和x保持一致
2.sin、cos輸入是弧度,sind、cosd輸入是度
3.矩陣操作:
(1)矩陣乘除法:inv(A)*B == B/A == A\B,A*B。
(2)點運算:在運算符前面加“.”,表示將他們的對應元素進行相關運算。
(3)矩陣乘方:A^x。
(4)矩陣加減法:A+B(維數相同)。
(5)rem(A,3)、mod(A,3)(+-問題rem前,mod后)
4.關系運算:
(1)>、<、>=、<=、==都和c++中運算相同,值得注意的是,matlab中不等於運算是~=而非!=。
(2)當參與邏輯運算的是兩個標量時,正常比較前后大小,表達式的值為0或1,而當參與運算的是兩個矩陣或者一個矩陣和一個標量時,返回的是一個與原矩陣維數相同的0-1矩陣(每個矩陣元素分別運算)。
(3)三種邏輯運算符(注意與C++的區別)與(&)或(|)非(~)。
(4)優先級排序:算術運算>關系運算>邏輯運算
(5)find()函數:調用方式:[i,j,v] = find(A>4):返回的(i,j)是A中>4元素的坐標,V返回的是value
5.字符串
matlab中字符串是由單引號括起來的字符序列,存儲方式和行向量一樣
例如:ch = 'Na+2Ba==Banana';
幾個操作:(其實就是對於行向量的操作)
(1)ch(1:6);
(2)ch(end:-1:1);
(3)length(ch);
(4)k = find(ch>='a'&ch<='z');ch(k) = ch(k)-('a'-'A');
(5)eval(ch)函數,作用是將ch內的字符串內容轉換成matlab中的命令
(6)字符串有數據值之間的轉換,matlab中的字符都是以ASCII碼形式存儲的,可使用abs和double函數將其轉換成數值向量
(7)字符串的連接:使用strcat函數,調用方式strcat(s1,s2,s3,...,sn)。
(8)字符串比較:1.strcmp(s1,s2),比較s1,s2是否相等。
2.strncmp(s1,s2),比較s1,s2前n個字符是否相等。
3.strcmpi(s1,s2),在不考慮大小寫的情況下比較s1和s2。
4.strncmpi(s1,s2),在不考慮大小寫的情況下比較兩字符串的前n個字符是否相等。
第三章.矩陣運算
1.特殊矩陣
(1)zeros //全零
(2)ones //全幺
(3)eye //產生單位陣
(4)rand //產生在0~1區間內服從均勻分布的矩陣
(5)randn //產生均值為0,方差為1的服從標准正態分布的矩陣
例如:產生在【20,50】范圍內的服從均勻分布的5階矩陣:20+30*rand(5)
產生均值為0.6,方差為0.1的服從標准正太分布的5階矩陣:0.6+sqrt(0.1)*randn(5)
2.矩陣變換:
(1)提取對角陣的元素:diag(A,k)函數,用以返回(A為m*n)min(m,n)個元素的列向量
diag(m);(m為一m元素行向量),用以使用m作為對角線元素創建一個m*m的矩陣
diag(V,k);以V中元素作為矩陣第k條對角線上的元素創建(m+k)規模的矩陣
(2)提取三角陣:
triu(A)、triu(A,k);
tril(A)、tril(A,k);
(3)矩陣轉置:
A'
(4)矩陣旋轉:
rot90(A,k);將矩陣逆時針旋轉90度的k倍,k == 1時可省略。
(5)矩陣翻轉
fliplr(A)左右翻轉
flipud(A)上下翻轉
3.矩陣求值
det(A)、rank(A)、trace(A)、eig(A)
(inf->表示無窮)
應用:解方程p為多項式系數,A = compan(p);A為p的伴隨矩陣,x1 = eig(A)即位方程的解。
第四章.程序流程控制
(1)M文件:其實就是一種文本文件
(2)創建函數:一般創建函數
例如:
function[a,b] = fun(a,b) c = a; a = b; b = c;
(3)輸入輸出:input;調用方式:x = input('提示信息');或者x = input('提示信息','s');第二種允許輸入字符串。
disp;
(4)選擇分支:
if elseif elseif . . . else end
switch 表達式 case 表達式 語句 case 表達式 語句 . . . otherwise 語句 end
(5)try語句
try 語句組1 catch 語句組2 end
(6)for語句
for 循環變量 = a:b:c %只要是一個矩陣就行 語句 end
(7)while語句
%一般格式 while(條件) 循環體語句 end
(8)break、continue
和c/c++一樣
(9)內聯函數:
a = '(x+y)^2'; f = inline(a);
(10)匿名函數:
f = @(變量名表)函數表達式
第五章.繪圖
(1)繪制二維曲線
直角坐標:
plot()函數:plot(x,y);plot(x1,y1,'選項',x2,y2,'選項');plot(x);
極坐標:
polar()函數:polar(theta,rou);polar(theta1,rou1,theta2,rou2)
ezpolt(f);默認在-2*Π到2*Π范圍內繪圖;
ezplot(f,[a,b]);f可以是字符串。
(2)繪制三維圖形
plot3(x1,y1,z1,x2,y2,z2)
[X,Y] = mehgrid(x,y);
mesh(x,y);
surf(x,y);
第六章.數據分析與多項式計算
(1)max、min函數[Y,U] = max(A,dim)、max(A,n)(n是標量)、max(A,B)(AB同維)
(2)sum(A,dim)、prod(A,dim);cumsum(A,dim),cumprod(A,dim);
(3)mean(A,dim)求平均值;median(A,dim)(求中值);
(4)std(A,flag,dim);(求標准差)flag = 0->無偏,flag = 0->有偏;
(5)corrcoef(A,B);
(6)[Y,I] = sort(A,dim,mode);mode = ['ascend'|'descend'];
(7)conv(P1,P2);(兩多項式的乘積);
(8)[Q,r] = deconv(P1,P2);Q->商,r->余項
(9)polyder(P);polyder(P1,P2);(P1*P2的導數);[p,q] = polyder(P1,P2);(求P1/P2的導數)
(10)Y = polyval(P,x);polyvalm(P,X);polyval->對於實數計算、polyvalm->對於矩陣計算;
(11)x = roots(P);poly(x);roots->求根、poly->根據根構造多項式;
(12)Y = interp1(X,Y,x,method);method = ['linear'|'nearest'|'pchip'|'spline'],interp2(X,Y,Z,X1,Y1,method);
(13)[P,S,mu] = polyfit(X,Y,m);依據X,Y對應關系產生一個m次多項式,P->多項式系數向量,S->誤差向量,mu是一個二維向量mu[1]->mean(x),mu[2]->std(x)
第七章.數值積分與微分
(1)Y = diff(X,n,dim);n階差分;
(2)求函數導數方法:1.直接差分求導2.多項式擬合后,polyder
(3)[I,n] = quad/quadl(filename,a,b,tol,trace);(定積分)
(4)integral(filename,a,b);上下限可為無窮大(inf)
(5)多重積分:integral2(filename,a,b,c,d);(二重)integral3(filename,a,b,c,d,e,f);(三重)
第八章.方程求解問題
(一)線性方程組求解
(1)直接法:利用'\'運算符,Ax = b;->x = A\b;
(2)迭代法。
(二)線性方程組的通解
matlab中無直接求解通解的函數
(三)非線性方程
(1)單變量非線性方程求解問題:
fzero(filename,x0,tol,trace);(只給出最靠近x0的那個解)(牛頓迭代法)
(2)多變量非線性方程組求解問題:
fsolve(filename,X0,option)
(四)最優化問題
無約束最優化問題:
(1)[x,fval] = fminbnd(filename,x1,x2);
求函數在(x1,x2)范圍內的最小值;
(2)[x,fval] = fminsearch(filename,[坐標]);
求函數在點附近的最小值
有約束最優化問題:
(1)[X,y] = fmincon(filename,x0,A,b,Aeq,Beq,Lbnd,Ubnd,NonF,option);
說明:Ax<=b;Aeq*x = Beq;Lbnd<=x<=Ubnd;NonF為非線性約束條件的文件名。
沒有的條件使用'[]'代替
線性規划問題求解:
(1)[X,fval] = linprog(f,A,b,Aeq,Beq,Lbnd,Ubnd);
默認都是求解最小值;f是各個變量前面的系數組成的列向量
整數規划問題求解:
(1)[x,fval] = bintprog(f,A,b,Aeq,Beq,x0,option);
求解一階數值微分的初值問題:
ode23、ode45、ode113、ode23s、ode23t、ode15s;
語法均相同:[t,y] = ode23(filename,[t0,tf],y0);
y0表示t = t0時的函數值。
第九章.符號計算:
(1)sym函數:x = sym('a');
(2)syms函數:syms 變量名1 變量名2 變量名3 ...
值得注意的是:1.變量名之間不要用逗號隔開,而是使用空格,2.變量名不需要使用單引號括起來。
(3)建立符號表達式的三種方式:
1.直接使用單引號括起來:U = ‘表達式’;
2.使用sym函數:U = sym('表達式');
3.使用已經定義過的符號變量生成的表達式就是符號表達式:
syms a b c;
U = a^2+2*b+c;
(4)對定義的變量設置值域:
assume函數:
1.assume(條件);syms x;assume(x>0);
2.assume(符號表達式,集合);表示符號表達式屬於集合。
(5)提取符號表達式的分子分母:
[p1,p2] = numden(S);
p1->分子;p2->分母;
(6)符號表達式的因式分解與展開:
factors(s);因式分解;
expand(S);展開;
collect(S);對S進行合並同類項;
collect(S,v);對S按變量v進行合並同類項;
對符號表達式的化簡:simplify(S);
(7)將符號表達式轉換成數值表達式:
eval(y);
(8)符號表達式和數值表達式之間的轉換:
poly2sym(p(,x)),將多項式系數向量p按照x轉換成符號表達式;
sym2poly(符號表達式);將符號表達式轉換成多項式系數向量;
(9)提取符號表達式內的變量:
findsym(s,n);symvar(s1,n);
n可省(返回s中全部符號變量),若不省,返回S中距離x最近的n個變量;
(10)符號極限:
limit(f,x,a,'right/left');a默認趨近於0,x未指定時等於最靠近x的變量
(11)符號導數:
diff(S,'v',n);對於符號表達式S,對‘v’求n階導;
(12)符號積分:
int(f);
int(f,'v');
int(f,'v',a,b);
(13)符號級數:
symsum(s,'v',n,m);
s->通項;
'v'->求和變量;
n、m開始結束項數;
(14)泰勒展開式:
taloy(f,v,a,Name,Value);
Name->字符串;Name = ['order'|'Expansionpoint'];
Value->Name的值;order->截斷階,默認值為6,即最高階為5;
(15)符號代數方程求解
函數
solve(s);求解符號函數的方程,求解變量為默認變量;
solve(s,v);按變量v求解方程;
solve(s1,s2,s3,s4,s5,...,sn,v1,v2,v3,v4,...,vn);求解由si組成的代數方程組,變量分別為vi(i = 1,2,3,4...)
(16)求解常微分方程:
dsolve(e,c,v);
e->常系數微分符號方程;(Dny->對y的n階導數)
c->初值條件;
v->指定變量;