第一章MATLAB基础1系统仿真是根据被研究的真实系统的数学模型研究系统性能的一门学科,现在尤指利用计算机去研究数学模型行为的方法,即数值仿真。
2MATLAB集计算,可视化及编程于一身。
其主要产品模块构成:(1)MATLAB(2)MATLABtoolbox(3)MATLAB Compiler(4)simulink(5)stateflow(6)Real-Time Workshop。
3MATLAB语言被称为第四代计算机语言。
有以下几个主要特点:编程效率高;使用方便;高效方便的科学计算;先进的可视化工具;开放性、可扩展性强;运行时动态连接外部C或FORTRAN应用函数;在独立C或FORTRAN程序中调用MATLAB 函数;输入输出各种MATLAB及其他标准格式的数据文件;创建图文并茂的技术文档;特殊应用工具箱;高效仿真工具Smulink。
4变量命名规则:变量名、函数名对字母大小写敏感;变量名第一个字母必须是英文字母(只能是英文、数字和下连线)。
5 real(z)求复数Z实部 imag(Z)求复数Z虚部abs(z) 求复数Z的模angle(Z)求复数Z的相角(单位是弧度)callback回校函数mdata=csvread(‘engdata.txt’)clc清除指令窗 clf清除图形窗cd设置当前工作目录clear清除工作空间保存的变量edit打开M文件编辑器exit、quit关闭、退出MATLAB6 c=3+5i c=3+5*i (a=3;b=5;c=a+b*i)1.3e-42.78e23 A.’转置S.*B S./B B.\S A.^n7Command History(历史指令)窗记录着用户在命令指令窗中所输入过的所有指令行,且所有这些被记录的指令行都能被复制,并送到指令窗中再运行。
8Workspace Browser(工作空间浏览器)也叫内存浏览器,他保存了指令窗所使用过的全部变量(除非有意删除),可通过该浏览器对内存变量进行操作。
10点击MATLAB桌面工具条上的?图标,或选择下拉菜单项【Help】,都能提供帮助;MATLAB还提供现场帮助,用鼠标点亮指令并点击右键,在弹出的菜单中选择【Help On Selection】。
第二章数据及其运算1简单数组生成方法:逐个元素输入法;冒号生成法[x=a:intc:b]; [x=linspace(a,b,n)]=[a:(b-a)/(n-1):b];logspace(w1,w2,n)2>> diag([3,3,3])产生对角形数组ans =3 0 00 3 00 0 3>> eye(3) 产生单位数组ans =1 0 00 1 00 0 1>> magic(3) 产生魔方数组a ns =8 1 63 5 74 9 2>> ones(3) 产生全1数组ans =1 1 11 1 11 1 1>> rand(3) 产生0、1间随机数组ans =0.8147 0.9134 0.27850.9058 0.6324 0.54690.1270 0.0975 0.9575>> zeros(3) 产生全0数组ans =0 0 00 0 00 0 0>> zeros(3,2)ans =0 00 00 03一位数组寻访>> x=[2.0000 1.0472 1.7321 3.0000+5.0000i];>> x1=x(3)x1 =1.7321>> x2=x([1 2 4])x2 =2.0000 1.0472 3.0000 + 5.0000i>> x3=x(2:end)x3 =1.0472 1.7321 3.0000 + 5.0000i>> x4=x(4:-1:1)x4 =3.0000 + 5.0000i 1.7321 1.0472 2.00004二维数组寻访:A(:,j)表示A矩阵的第j列全部元素;A(i,:)表示A矩阵第i行全部元素;A(1:3,2:4)表示对A矩阵取第1~3行,第2~4列中所有元素。
例:>> A=rand(3,5)A =0.1190 0.3404 0.7513 0.6991 0.54720.4984 0.5853 0.2551 0.8909 0.13860.9597 0.2238 0.5060 0.9593 0.1493>> A1=A(1,:)A1 =0.1190 0.3404 0.7513 0.6991 0.5472>> A2=A(1:2,2:5)A2 =0.3404 0.7513 0.6991 0.54720.5853 0.2551 0.8909 0.1386>> A3=A([1,3],[2,5])A3 =0.3404 0.54720.2238 0.14935非数(Not a Number)指的是0/0、∞/∞、0x∞之类的运算,用NaN或nan表示。
非数参与运算所得结果也是非数,具有传递性;非数没有大小,不能比较两个非数的大小。
6在MATLAB中,‘‘空’’数组除了用[ ]表示外,某维或若干维长度均为0的数组都是‘‘空’’数组。
7逻辑运算符: &与|或 ~非第三章数据和数组的可视化1例t=(0:pi/50:2*pi)'; %生成(101x1)的时间采样列向量k=0.4:0.1:1; %生成(1x7)的行向量X=cos(t)*k; %生成(101x7)的矩阵plot(X); %绘制曲线,横坐标为每列元素对应的下标box on使坐标封闭box off使坐标开启title(s)书写图名text(x,y,s) 在(x,y)处写字符注释xlable(s) 横坐标轴名ylable(s)纵坐标轴名hold on,hold off多层叠绘axis([0,1,-1,17])坐标范围alpha(0)完全透明,alpha(0.5)半透明,alpha(1)完全不透明plotyy(X1,Y1,X2,Y2) 双纵坐标shading[flat,interp,faceted]3 view([az,el])通过方位角、俯视角设置视点,例view([-82,58])View([vx,xy,xz])通过直角坐标设置视点3 M文件包括M脚本文件和M函数文件;M脚本文件的执行过程与在指令窗中直接输入指令的效果一样,但效率更高;M函数文件与脚本文件类似之处在于他们都是一个扩展名为“.m”的文件;M函数文件通常由以下几个部分组成:函数定义行、H1行、函数帮助文本、函数体、注释。
legend(s1,s2,…)在图的右上角建立图例3例:t=(0:0.02:2)*pi;x=sin(t);y=cos(t);z=cos(2*t);plot3(x,y,z,'b-',x,y,z,'bd')box onlegend('链','宝石')4 >>x=-4:4;y=x;[X,Y]=meshgrid(x,y);Z=X.^2+Y.^2;subplot(1,3,1),surf(X,Y,Z) %曲面图subplot(1,3,2),mesh(X,Y,Z) %网线图subplot(1,3,3),plot3(x,y,x.^2+y.^2);box on %曲线图5>> [x,y]=meshgrid(-3:0.1:3,-2:0.1:2);z=(x.^2+2*x).*exp(-x.^2-y.^2-x.*y);subplot(1,2,1),mesh(x,y,z)axis([-3,3,-2,2,-0.5,1.0])title('toushi')hidden off %透视被叠压图形subplot(1,2,2),mesh(x,y,z)>> title('xiaoyin')hidden on %消隐被叠压图形>> axis([-3,3,-2,2,-0.5,1.0])第四章 MATLAB编程1for x=array 说明:循环体执行的次数由数组array的列数决定(commands)例:for x=0.2:0.2:0.8end b=sqrt([1-x^2]);end2while expression说明:当expression为真时,执行循环体直commands 到为假end3if expression if expressioncommands commandsend elseend4 ezplot(f)其中f=f(x,y)为用符号函数表示的隐函数例:ezplot(’x^2+x*y+y^2-10’)5[x,y]=ginput(n)该指令用鼠标从图形上获取n个点的坐标(x,y)6例:用冒泡法对数组A=[1 6 8 9 3 5 6]进行升序排序解:>> r=length(A);for i=1:r-1for j=i+1:rif A(i)>A(j) %A(i)<A(j)时,进行降序排序temp=A(i);A(i)=A(j);A(j)=temp;endendendy=A第五章系统模型1计算机仿真过程:建模;模型实现;仿真分析。
2 num=[5,3];den=[1,6,11,6]; %sys=tf(num,den)sys=tf(num,den)Transfer function:5 s + 3----------------------s^3 + 6 s^2 + 11 s + 6sys=tf([5 3],[1 6 11 6])Transfer function:5 s + 3----------------------s^3 + 6 s^2 + 11 s + 6z=-0.6;p=[-3 -2 -1]; sys=zpk(Z,P,K)k=5;sys=zpk(z,p,k)Zero/pole/gain:5 (s+0.6)-----------------(s+3) (s+2) (s+1)>> sys=zpk(-0.6,[-3 -2 -1],5)Zero/pole/gain:5 (s+0.6)-----------------(s+3) (s+2) (s+1)>> [z,p,k]=zpkdata(sys,'v')z =-0.6000p = -3-2-1k =5>> [num,den]=tfdata(sys,'v')num =0 0 5 3den =1 6 11 63 pzmap(sys)注:该指令将在S平面上用符号“O”表示零点,符号“X”表示极点。