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->指定变量;