MatlabMatlab教程教程MatlabMatlab教程教程函数的数值表达•初等函数的数值直接表示•sqrtsincoslog•sin(2)ans=0.9093log(3)(以e为底)ans=1.0986向量的生成•直接输入向量,格式要求是:向量元素需要用“[]”括起来,元素之间可以用空格、逗号或分号分隔;•a=[1,2,3]a=123•sin(a)ans=0.84150.90930.1411•利用冒号表达式生成向量•冒号表达式的基本形式为x=x0:step:xnx0表示向量的首元素值,xn表示向量的尾元素数值限,step表示从第二个元素开始,元素数值大小与前一个元素之大小的差值。a=1:2:12a=1357911向量的基本运算1.加(减)与数加(减)•a-1%这里的a即上面生成的aans=02468102.数乘a*2ans=26101418223.点积dot(a,b)返回向量a和b的数量点积。a和b必须同维。a=[123]b=[345]dot(a,b)ans=264.叉积cross(a,b)返回向量a和b的叉积向量。a,b必须为三维向量。a=[123]b=[345]cross(a,b)ans=-24-2矩阵的生成输入矩阵时要以”[]“为标识,同行元素之间可用空格或”,“分隔,行与行之间要用”;“或回车符分隔,若不想看到中间结果,可以用”;“结束。a=[123;1,11;4,56]a=123111456矩阵的运算•矩阵的加和减a=[123;1,11;4,56];b=[345;121;231];c=a+bc=468232687•矩阵的乘法e=[b,[555]']e=345512152315f=a*ef=111710306971529443175•矩阵的逆运算【例】求下面A矩阵的逆。5101242170131312A•解:a=[21-3-1;3107;-124-2;10-15];inv(a)ans=-0.04710.5882-0.2706-0.94120.3882-0.35290.48240.7647-0.22350.2941-0.0353-0.4706-0.0353-0.05880.04710.29412.矩阵的行列式运算a1=det(a)a1=-853.秩函数rank(a)ans=4•特征值函数[x,y]=eig(a)%x为特征向量矩阵,y为特征值矩阵x=-0.58430.9223-0.1387-0.2449i-0.1387+0.2449i0.71600.0904-0.7828-0.7828-0.3806-0.0066-0.0803+0.3491i-0.0803-0.3491i0.0333-0.3756-0.4212-0.0489i-0.4212+0.0489iy=-1.122800002.526600005.2981+1.3755i00005.2981-1.3755i几种常用的矩阵•zeros(M,N)生成M*N阶的全0阵•zeros(size(A))生成与A同阶的全0阵•eye(M,N)生成M*N阶的单位阵•ones(M,N)生成M*N阶的全1阵•rand(M,N)生成M*N阶的随机矩阵数组的运算•数组的加减法与矩阵的加减法运算完全相同,符号统一“+”,“-”a=[21-3-1;3107;-124-2;10-15];a+1ans=32-204218035-12106•数组的乘除法是指两同维数组间对应元素之间的乘除法,它的运算符为“.*”和“./”或“.\”a=[123;234;345];b=[111;222;333];a./bans=1.00002.00003.00001.00001.50002.00001.00001.33331.6667•数组的幂运算符为“.^”,他表示每个数组元素的幂运算,同矩阵的幂运算符不同。a^3a.^3ans=ans=1321922521827192279366827642523664802764125多项式的表示方法对于多项式用以下的行向量表示这样就把多项式问题转化为向量问题nnnnaxaxaxaxP1110)(],,,,[110nnaaaaP【例如】输入多项式p=[1-56-33];poly2sym(p)ans=x^3-5*x^2+6*x–33%其中poly2sym是符号工具箱中的函数,可将多项式向量表示为符号多项式的形式336523xxx多项式的拟合polyfit(X,Y,n)其中X、Y为拟合数据,n为拟合多项式的阶数【例】用5阶多项式对[0,2π]上的正弦函数进行最小二乘拟合。x1=0:pi/30:pi*2;y1=sin(x1);a=polyfit(x1,y1,5);y2=a(1)*x1.^5+a(2)*x1.^4+a(3)*x1.^3+a(4)*x1.^2+a(5)*x1+a(6);plot(x1,y1,'b-',x1,y2,'r*')legend('原曲线','拟合曲线')axis([0,7,-1.2,4])函数拟合观察数据(x,y);对于线性拟合模型y=ax+b:1.利用A=polyfit(x,y,1)得到系数向量其中A(1)=a,A(2)=b所得线性模型为y=A(1)*x+A(2)•2.解线性方程组对于线性拟合模型y=ax+b,等价于令A=(a,b),则那么1),(xbay),,,,(),,,,(2121nnxxxXyyyY1XAY111/XYXYAMatLab图形绘制功能•基本绘图函数命令含义plot建立向量或矩阵的图形loglogx、y轴都取对数标度建立图形title给图形加标题xlabel给x轴加标记ylabel给y轴加标记text在图形指定的位置上加文本字符串gtext在鼠标的位置上加文本字符串grid打开网格线x=0:0.001:10;%0到10的1000个点的x座标y=sin(x);%对应的y座标plot(x,y);%绘图(可以设定显示范围)画椭圆a=0:pi/50:2*pi;X=cos(a)*3;%参数方程Y=sin(a)*2;plot(X,Y);xlabel('x'),ylabel('y');title('椭圆')1232222yx线条和颜色控制符:.点y黄。小圆圈m棕色xx标记c青色+加号r红色-实线g绿色*星号b蓝色:虚线w白色-.点划线h黑色条形图当资料点数量不多时,长条图是很适合的表示方式:closeall;%关闭所有的图形视窗x=1:10;y=rand(size(x));bar(x,y)误差图x=linspace(0,2*pi,30);y=sin(x);e=std(y)*ones(size(x));%std:标准差errorbar(x,y,e)极坐标图形theta=linspace(0,2*pi);r=cos(4*theta);polar(theta,r);阶梯图x=linspace(0,10,50);y=sin(x).*exp(-x/3);stairs(x,y);针状图x=linspace(0,10,50);y=sin(x).*exp(-x/3);stem(x,y);符号表达式画图在许多的场合,将表达式可视化是有利的。MATLAB提供了函数ezplot来完成该任务。y='16*x^2+64*x+96'y=16*x^2+64*x+96ezplot(y)三维曲线和曲面1.空间曲线绘制函数plot3()格式一:plot3(x,y,z)功能:若x、y、z为相同长度的向量,则根据向量x、y、z绘制空间三维曲线。如果x、y、z为同阶矩阵,则绘制对应列的多条曲线。格式二:plot3(x,y,z,’s’)功能:按字符串s设置的线型、颜色、标记符号绘制三维空间曲线。字符串s的设置与plot命令的设置相同。2.三维网线图函数mesh、meshc和meshzMATAL提供的函数mesh用来绘制三维网线图。格式一:mesh(X,Y,Z)功能:根据矩阵X、Y和Z绘制彩色的空间三维网线图。X、Y和Z中对应的元素为三维空间上的点,点与点之间用线连接。其中网线的颜色随着网点高度的改变而改变。格式二:mesh(x,y,Z)功能:n维向量x、m维向量y和m×n矩阵Z绘制网线图,节点的坐标为(x(j),y(i),Z(i,j)),网线的颜色随着网点高度的改变而改变。三维曲面图函数surf及surfc格式一:surf(X,Y,Z,C)功能:绘制由四个矩阵所指定的带色参数的网状表面图。视角是由view所指定。轴的刻度决定于X,Y及Z的范围,或当前对轴的设定;颜色范围由C指定。格式二:surf(X,Y,Z)功能:将C设为与Z相等,则颜色与网的高度成正比。三维螺旋线t=0:pi/50:10*pi;plot3(sin(t),cos(t),t)grid空间中的曲线t=linspace(0,20*pi,501);plot3(t.*sin(t),t.*cos(t),t);%注意用点乘.*t=linspace(0,10*pi,501);plot3(t.*sin(t),t.*cos(t),t,t.*sin(t),t.*cos(t),-t);立体网状图x=linspace(-2,2,25);%在x轴上取25点y=linspace(-2,2,25);%在y轴上取25点[xx,yy]=meshgrid(x,y);%xx和yy都是25x25的矩阵zz=xx.*exp(-xx.^2-yy.^2);%计算函数值,zz也是25x25的矩阵mesh(xx,yy,zz);%画出立体网状图22()xyzxe网状图填补x=linspace(-2,2,25);%在x轴上取25点y=linspace(-2,2,25);%在y轴上取25点[xx,yy]=meshgrid(x,y);%xx和yy都是25x25的矩阵zz=xx.*exp(-xx.^2-yy.^2);%计算函数值,zz也是25x25的矩阵surf(xx,yy,zz);%画出立体曲面图22()xyzxepeaks函数•peaks函数,可产生一个凹凸有致的曲面,包含了三个局部极大点及三个局部极小点,其方程式为:[x,y,z]=peaks;waterfall(x,y,z);等高线图•meshc同时画出网状图与等高线:[x,y,z]=peaks;meshc(x,y,z);•surfc同时画出曲面图与等高线:[x,y,z]=peaks;surfc(x,y,z);剔透玲珑球[X0,Y0,Z0]=sphere(30);%产生单位球面的三维坐标X=2*X0;Y=2*Y0;Z=2*Z0;%产生半径为2的球面的三维坐标surf(X0,Y0,Z0);%画单位球面shadinginterp%采用插补明暗处理holdon;mesh(X,Y,Z);holdoff%画外球面hiddenoff%产生透视效果axisoff%不显示坐标轴求解线性方程组2342*9345328132xMATLAB语句实现:a=[2,3,-1;8,2,3;45,3,9];b=[2;4;23];x=inv(a)*b求多项式方程的根•roots(p)•solve(p)•例.求方程的所有根p=[1-49-10]r=roots(p)或s1=sym('x^3-4*x^2+9*x-10');solve(s1)0109423xxx求方程组的根5111yxyx[x,y]=solve('x+y=1','x-11*y=5','x','y')求导数与偏导数1533xxsymsx;f=3*x^3+5*x+1;diff(f,1)yxz2sin2symsxy;%对x偏导数z=x^2*sin(2*y);B=diff(z,x)MATLAB语言