您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > Matlab实用教程
Matlab实用教程2.2数组2.2.1建立数组(1)逐个元素生成法x=[123;234;245](2)冒号法x=1:1:5(3)特殊方法x=linspace(1,5,5)x=logspace(0,2,5)在010与210之间插入5-2个数。x=logspace(1,pi,5)如果中间数为,在110与之间插入5-2个数;如果中间数小于2,则log(1,2,)spaceyyN返回值为210y。2.2引用数组(1)一维数组已知一维数组x=[12345],求x(1:3)。(2)二维数组二维数组x=[123;234;245],求x(2,2:3)。2.3运算符2.3.1算术运算定义加减乘右除左除乘方操作符+-*/\^点运算.*./.\.^2.3.2关系运算定义等于不等于大于大于等于小于小于等于操作符==~===2.3.3逻辑运算符定义逻辑与逻辑或逻辑非逻辑异或操作符&|~xorMatlab语言中的逻辑运算规则输入与或异或非aba&ba|bxor(a,b)~a000001010111100110111100所有非0数均被认为是真,而0为假;在逻辑判断结果中,判断为真时输出1,判断为假时输出0。例:A=[11;01];b=0;B=[01;00];C1=A&bC2=A|bC3=xor(A,B)2.4m文件例分别绘制花瓣图案32sin()r,3cos()r,2sin()r,35cos(3.5)r。clear;theta=-pi:0.01:pi;rho(1,:)=2*sin(5*theta).^2;rho(2,:)=cos(10*theta).^3;rho(3,:)=sin(theta).^2;rho(4,:)=5*cos(3.5*theta).^3;fori=1:4subplot(2,2,i);polar(theta,rho(i,:))end【例】定义一个名为f.M的函数文件,并调用该函数。functionz=f0226(x,y)z=sin(x.^2)+y.^2-2*x-5;a=[13];b=[22];c=f0226(a,b)2.5程序设计2.5.1顺序结构【例】顺序结构disp('thebeginoftheprogram')disp('thefirstline')disp('theendoftheprogrogram')2.5.2分支结构(1)条件语句【例】a=1;ifa==0;disp('nihao1');elsedisp('nihao2');end【例】a=0;ifa==0;disp('nihao1');elseifa==1;disp('nihao2');elseendend(2)开关语句定义函数functiony=f0233(x)switchxcase{1,2}y=x*0.1;case{3,4}y=x*0.4;otherwisey=x*0.5;end在命令窗输入a=2.5;b=f0233(a)2.5.3循环结构【例】for(i=1:3)for(j=1:4)A(i,j)=1.5;endendA【例】i=0;while(i==5)A=1.5;end;A3.6求解线性方程组线性方程组的求解可以分为两类:一类是方程组求唯一解或求特解,另一类是方程组求无穷解或通解,可以通过方程组系数矩阵的秩来判断:(1)若系数矩阵的秩rn,(n为方程组中未知量的个数),则有唯一解。(2)若系数矩阵的秩rn,则可能有无穷多解。(3)线性方程组的无穷解=对应齐次方程组的通解+非齐次方程组的一个特解。3.6.1线性方程组唯一解或特解的解法(1)矩阵的除法【例】求方程组121232343456156056050xxxxxxxxxxA=[5600;1560;0156;0015];b=[1000]';R_A=rank(A)%求系数矩阵的秩X=A\b另一种解法C=[A,b];R=rref(C)3.6.2齐次线性方程组的通解的解法Matlab中函数null用来求解零空间,即满足0AX的空间,实际上求出解空间的一组基(基础解系),它可用于获得齐次线性方程组的通解。【例】求解方程组1234123412342202220430xxxxxxxxxxxx的通解。A=[1221;21-2-2;1-1-4-3];formatrat%指定有理数格式输出B=null(A,'r');%求出解空间的有理基symsk1k2%定义符号变量X=k1*B(:,1)+k2*B(:,2)%写出方程组的通解另解A=[1221;21-2-2;1-1-4-3];formatratB=rref(A)B=10-2-5/30124/3000025/324/3121001Xkk3.6.3非齐次线性方程组通解的解法一般解法(1)判断AXb是否有解,若有解则进行下一步;(2)求AXb的一个特解;(3)求0AX的通解;(4)求AXb的通解为0AX的通解+AXb的一个特解。【例】求方程组1234123412343133445980xxxxxxxxxxxx的通解。A=[11-3-1;3-1-34;15-9-8];b=[140]';B=[Ab];n=4;R_A=rank(A)R_B=rank(B)formatratifR_A==R_B&R_B==n%判断有唯一解X=A\belseifR_B&R_An%判断有无穷解X=A\b%求特解C=null(A,'r')%求齐次方程的基础解系elseX='equitionnosolve'%判断无解end原方程的通解为3/23/403/27/4012108/15013/5Xkk另解A=[11-3-1;3-1-34;15-9-8];b=[140]';B=[Ab];C=rref(B)C=10-3/23/45/401-3/2-7/4-1/400000对应的齐次方程组的基础解系的解为13/23/210,23/47/401,非齐方程的特解为5/41/400,通解为1122Xkk。第四章数据处理4.1数据插值4.4.1一维插值【例】x,y的实测数据如下表,求12.55x处的插值结果。x1.02.03.04.05.0y11.216.520.426.330.5x=[1.02.03.04.05.0];%输入变量xy=[11.216.520.426.330.5];%输入变量yx1=2.55;%输入插值点xy11=interp1(x,y,x1,'nearest')%最近点插值法的插值结果y12=interp1(x,y,x1,'linear')%线性插值法的插值结果y13=interp1(x,y,x1,'cubic')%三次Hermite插值法结果y14=interp1(x,y,x1,'spline')%样条插值法的插值结果4.1.2二维插值x=[0.00.51.01.52.02.53.0];y=[0.00.51.01.52.02.53.0];z=[100991009910099100100999999100991000999998981009910010098979799100103101100989810010210410210310110010210610699102100100103108103];x1=2.3;y1=2.8;%输入插值点z11=interp2(x,y,z,x1,y1,'nearest')%最近插值法z12=interp2(x,y,z,x1,y1,'bilinear')%双线性插值z13=interp2(x,y,z,x1,y1,'bicubic')%双三次插值4.2曲线拟合4.2.1多项式曲线拟合y=polyval(p,x),y为关于自变量x,系数为p次多项式的值,x为矩阵或向量时,对其每一点进行操作;p为一向量,个元素为多项式系数(降幂排列),对n次多项式来说,p有1n个元素,即1011nnnnypxpxpxp【例】设x=[0.00.30.81.11.62.3]',y=[0.500.821.141.251.351.40]',试求二次多项式拟合系数,并据此计算x1=[0.91.2]时,对应的y1。程序x=[0.00.30.81.11.62.3]';%输入变量xy=[0.500.821.141.251.351.40]';%输入变量yp=polyfit(x,y,2)%对x,y用二次多项式拟合,得到系数px1=[0.91.2];%输入插值点xy1=polyval(p,x1)%估计x1处对应的y14.2.2使用指定函数进行曲线拟合min21()2xiiifx形式的最小平方问题(这里,()ifx为用户定义的函数,x为自变量),实际上是对指定函数的曲线拟合,可使用优化工具中非线性曲线拟合的拟合命令lsqnonlin。【例】试根据土的压缩实验数据(ep数据),用双线性模型0peeabp确定模型参数a,b(压力00p时的孔隙比,可用天然孔隙比0e代替)已知p=0,0.05,0.1,0.2,0.4,0.6,0.8,1.2MPa对应的孔隙比分别为e=1.335,1.253,1.180,1.058,0.887,0.803,0.752,0.685。定义函数functionf=f0405(x,Data)Data=[0.00001.335;0.05001.253;0.10001.180;0.20001.058;0.40.887;0.6000.803;0.80.752;1.20.685];p=Data(:,1);e=Data(:,2);e1=e(1);z=e1-p./(x(1)+x(2)*p);f=z-e;在命令窗口输入Data=[0.00001.335;0.05001.253;0.10001.180;0.20001.058;0.40.887;0.6000.803;0.80.752;1.20.685];p=Data(:,1);e=Data(:,2);plot(p,e,'g-');holdon;x0=[10]';x=lsqnonlin('f0405',x0)e1=e(1);e=e1-p./(x(1)+x(2)*p);plot(p,e,'bo-');4.3数据统计A=[137;815;691];%输入已知数据AB=[1018;5710;917];%输入已知数据Bmaxa=max(A)%返回A列最大值[maxa,I]=max(A)%返回A列最大值与对应下标maxab=max(A,B)%返回(A,B)对应元素最大值meana=mean(A)%返回A的平均值mediana=median(A)%返回A列中值stda=std(A)%返回A列标准差suma=sum(A)%返回A列元素之和csuma=cumsum(A)%返回A列元素累计和sorta1=sort(A)%返回A列按列排序结果sorta2=sortrows(A)%返回A列按行排序结果cova=cov(A',B')%返回A列向量协方差corr=corrcoef(A',B')%返回A’,B’的相关系数proda=prod(A)%返回A列元素积cprada=cumprod(A)%返回A列元素累计积第五章数值计算5.1函数极值5.1.1一元函数的极值【例】求函数3()25fxxx在区间(0,2)上的极值。f=inline('x.^3-2*x-5');%通过内联函数建立函数fx1=fminbnd(f,0,2)%求函数f在区间(0,2)上的极值x2=fminbnd(f,0,2,optimset('TolX',1e-12,'Display','off'))%求函数f在区间(0,2)上的极值并进行有关计算设置[x3,fx,out]=fminbnd(f,0,2
本文标题:Matlab实用教程
链接地址:https://www.777doc.com/doc-2882090 .html