最好matlab教程全Matlab程序设计剖析
- 格式:ppt
- 大小:555.50 KB
- 文档页数:24
第二章 MATLAB 语言及应用实验项目实验一 MATLAB 数值计算三、实验内容与步骤1.创建矩阵⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=987654321a(1(2)用(3)用(42.矩阵的运算(1)利用矩阵除法解线性方程组。
⎪⎪⎩⎪⎪⎨⎧=+++=-+-=+++=+-12224732258232432143214321421x x x x x x x x x x x x x x x 将方程表示为AX=B ,计算X=A\B 。
(2)利用矩阵的基本运算求解矩阵方程。
已知矩阵A 和B 满足关系式A -1BA=6A+BA ,计算矩阵B 。
其中⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=7/10004/10003/1A ,Ps: format rata=[1/3 0 0;0 1/4 0;0 0 1/7];b=inv(a)*inv(inv(a)-eye(3))*6*a(3)计算矩阵的特征值和特征向量。
已知矩阵⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡--=1104152021X ,计算其特征值和特征向量。
(4)Page:322利用数学函数进行矩阵运算。
已知传递函数G(s)=1/(2s+1),计算幅频特性Lw=-20lg(1)2(2w )和相频特性Fw=-arctan(2w),w 的范围为[0.01,10],按对数均匀分布。
3.多项式的运算(1)多项式的运算。
已知表达式G(x)=(x-4)(x+5)(x 2-6x+9),展开多项式形式,并计算当x 在[0,20]内变化时G(x)的值,计算出G(x)=0的根。
Page 324(2)多项式的拟合与插值。
将多项式G(x)=x 4-5x 3-17x 2+129x-180,当x 在[0,20]多项式的值上下加上随机数的偏差构成y1,对y1进行拟合。
对G(x)和y1分别进行插值,计算在5.5处的值。
Page 325 四、思考练习题1.使用logspace 函数创建0~4π的行向量,有20个元素,查看其元素分布情况。
Ps: logspace(log10(0),log10(4*pi),20) (2) sort(c,2) %顺序排列 3.1多项式1)f(x)=2x 2+3x+5x+8用向量表示该多项式,并计算f(10)值. 2)根据多项式的根[-0.5 -3+4i -3-4i]创建多项式。
NIND=200;MAXGEN=2000;NV AR=55;max=5000000;P=0.3;M=3;N=5;L=7;A=[313000000 378000000 465000000] ;M=[20000 10000 30000 40000 40000] ;D=[165 150 200 100 150 300 200] ;f=[6000000;4000000;6000000;700000;5000000] ;V=[80;80;90;955;100] ;a=[15;20;24;20;15;20;20;15;20;24;20;15;24;20;15] ;C=[20;15;15;20;15;20;15;20;25;20;25;15;15;15;15;15;15;20;20;25;20;30;20;20;20;20;25;20;20;1 5;15;15;20;20;20;20] ;P=3;for i=l:NINDwhile 0<1for j=1:5chroml(i,j)=round(rand(i)) ;endif(sum(chroml(i,:),3)>=1)&(sum(chroml(i,:) ,3)<=P)breakendendendsumb=zeros(NIND,5) ;sumd=zeros(NIND,5);for i=l:NINDfor j=l:5if chrom1(i,j)=0chrom3(i,(2*(j-1)+1):(3*j))=0;chrom3(i, (7*(j-l)+1):(8*j))=0;elsewhile chroml(i,j)=l chrom3(i,(3*(j-1)+1):(3*j)=rand(i,3).* min(A[M(j)M(j)]);sumb(i,j)=sum(chrom3(i,(3*(j-l)+1):(3*j)),3);chrom3(j,(7*(j-1)+1):(7*j))=rand(1,7).*(rep([M(j)],[11]));sumd(i,j)=sum(chrom3(i,(7*(j-l)+1):(7*j)),3);chrom3(i,(7*(j-l)+1):(7*j))=(sumb(i,j)/sumd(i,j))*chrom3(i,(7*(j-l)+1):(7*j));if sumb(i,j)<=1.0*M(j)breakendendendendendchrom=[chroml chrorn2 chrom3];%产生初始种群[objvalue]=calobjvaluc(chrom,M,N,L,A,C, V,f);[fitvalue,restriction]=calfitvalue(objvalue,chrom,max,M,N,L,A,M,D,P); [bestindividual,bestfit,bestrestriction,nopos]=best(chrom,fitvalue,restriction);gem=0;while gen<MAXGEN,[objvalue]=calobjvalue(chrom,M,N,L,A,C,V,D);[fitvalue,restriction]=calfitvalue(objvalue,chrom,max,M,N,L,A,M,D,P); [bestindividuall,bestfitl,bestrestrictionl,noposl]=best(chrom,fitvalue,restriction);if bestrestriction>bestrestrictionlbestindividual=bestindividual l;besttit=-bestfitl;bestrestriction=bestrestriction l;endif bestrestriction =bestrcstrictionl)&(bestfit<bestfitl)bestindividual=beStindividual l;besttit=-bestfitl;bestrestriction=bestrestrictionl:endchrom(noposl,:)=bestindividual;[newchrom]=selection(chrom,fitvalue);[newchrom]=crossover(newchrom,M,N,1);[newchrom]=mutation(newchrom,P,M,N,1);[bestindividual2,bestfit2,bestrestrietion2,nopos2]=best(newchrom,fitvalue, restrietion); If bestrestriction>bestrestriction2bestindividual=bestindividual2;bestfit=bestfit2;bestrestriction=bestrestriction2;endif(bestrestriction=bestrestriction2)&(bestfit<bestfit2)bestindividual=bestindividual2;bestfit =-bestfit2;bestrestriction =bestrestriction2;endchrom=newchrom;gen=gen+1;endbestindividual,bestfit,bestrestriction%目标函数Function[objvalue]=ealobjvalue(chrom,M,N,L,A, V,f)Chrom1= chrom(:,1:N);Chrom2=chrom(:,(N+1):(N+M*N));chrom3= chrom (:,(N+M*N+1):(N+M*N+N*L));[NIND,NV AR]=size(chrom);for i=l:NINDfor j=l:Nu(i,j)=7300*sum(chrom2(i,(2*(j-l)+1):(2*j)),2);endendobjvalue=chrom2*a*7300+chrom3*c*3650+sqrt(u).* chroml*V+chroml*f; %适应度计算和约束判断Function[fitvalue restrection]=ealfitvalue(objvalue,chrom, max,M,N,l,A,M,D,P)Global gen;[NIND,NV AR]=size(chrom);Chroml=chrom (:,1:N);chrom2=Chrom(:,(N+1):(N+M*n));chrom3=Chrom(:,(N+M*N*N+1):(N+M*N+N*1));restriction=zeros(NIND,1);r=zeros(NIND,M);s=zeros(NIND,N);t=zeros(NIND,1);u=zeros(NIND,3);p=zeros(NIND,n);for i=l:NINDfor j=l:Mr(i,j)=A(j)-sum((chrom2(i,j:m:m*}n)),2);if r(i,j)<0restriction(i,1)=restriction(i,1)+1;endendfor j=l:lt(i,j)=sum((chrom3(i,j:l:n*1)),2)-D(j);if t(i,j)<0restriction(i,1)=-restriction(i,l)+1;endendfor j=l:ns(i,j)=chroml(i,j)*M(j)-sum(chrom2(i,(M*(j-1)+1):(M*j)),2);p(i,j)=abs(sum(chrom3(i,(1*(j-1)+1):(1*j)),2)-sum(chrom2(i,(M*(j-1)+1):(M*j)),2));if s(i,j)<0restrietion(i,1)=restriction(i,1)+l;endif p(i,j)>=l e-3restriction(i,1)=restriction(i,l)+l;endendu(i,1)=P-sum(chroml(i,:),2);if u(i,1)<0restriction(i,1)=restriction(i,l)+1;endu(i,2)=sum(chroml(i,:),2)-1;if u(i,2)<0restrigtion(i,1)=restriction(i,1)+l;endif(objvalue(i,1)<max)fitvaluc(i,1)=max-objvaluc(i,1);elsefitvalue(i,1)=0.0;endend%找出最优个体和最差个体function[bestindividual,bestfit,bestrestriction,nopos]=best(chrom,fitvalue,restriction); [NIND,NV AR]=size(chrom);pos=l;for i=l:NINDif restriction(pos,1)>restriction(i,1)pos=i;endif(restriction(pos,1)=restriction(i,1))&(fitvalue(pos,1)<fitvalue(i,1)) pos=i;endendbestindividual=chrom(pos,:);bestfit=fitvalue(pos);bestrestriction= restriction (pos,:);nopos=1;for i=l:NINDif restriction(nopos,1)<restriction(i,1)nopos=i;endif(restriction(nopos,1)=restriction(i,1))&(fitvalue(nopos,1)>fitvalue(i,1)) nopos=i;endend%选择Function[newchrom]=selection(chrom,fitvalue)totalfit=sum(fitvalue);fitvalue=:fitvalue/totalfit;fitvalue=cumsum(fitvalue);[NIND,NV AR]=size(chrom);ms=sort(rand(NIND,1));fitin=1;newin=1;while newin<=NINDif(ms(newin))<fitvalue(fitin)temp(newin,:)=chrom(fitin,:);newin=newin+1;elsefitin=fitin+1;endif fitin>=NINDfitin=NIND;endendnewchrom=temp;%交叉Function[newchrom]=crossover(chrom,M,N,1)global gen;[NIND,SVAR]=size(chrom);chrom1=chrom(:,l:n);chrom2=chrom(:, (N+1) : (N+M*N)) ;chrom3=chrom(:, (N+m*n+1) : (N+M*N+N*1)) ; newchrom=zeros(NIND,NV AR) ;P=0.75;for i=l:2:NIND-1if(rand<P)point=ceil(rand*(N-1));ifpoint<5newchrom(i,:)=[chroml(i,l:point)chromI(i+1,point+1:n) ... chrom2(i,l:M*point)chrom2(i+l,M*point+1:M*N) ... chrom3(i,1:l*point)chrom3(i+l,1*point+l:N*1)]; newchrom(i+l,:)=[chroml(i+l,1:point)chroml(i,point+l:n) ... chrom2(i+l,l:m*point)chrom2(i,M*point+l:M*N) ...chrom3(i+1,1:l*point)chrom3(i,1*point+l:N*1)];elsenewchrom(i,:)=chrom(i,:);newchrom(i+1,:)=chrom(i+l,:);endelsenewchrom(i,:)=chromo,:);newchrom(i+l,:)=chrom(i+l,:);endend%变异Function[newchrom]=mutation(chrom,P,M,N,L)global gen;FieldDR=[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0;20000 20000 10000 10000 30000 30000 40000 40000 40000 40000];RANGE=[0 0 0 0 0 0 0;165 150 200 100 150 300 200];[NIND,NV AR]=size(chrom);chroml=chrom(:,l:N);chrom2=chrom(:, (N+1):(N+M*N));chrom3=chrom(:, (N+M*N+1):(N+M*n+ 1));newchrom=zeros(NIND,NV AR);newchroml=zeros(NIND,N);newchrom2=zeros(NIND,M*N);newchrom3=zeros(NIND,N*1);for i=1:NINDfor j=l:Nif chrom l(i,j)=0newchrom2(i,(M*(j-1)+1):(M*j))=0;newchrom3(i,1*(j-l)+1):(1*j)=0;elseif round(rand)=0newchrom2(i,(M*(j-1)+1):(M*j))=chrom2(i,(M*(j-1)+1):(M*j)+ ...(FieldDR(2,(M*(j-1)+1):(M*j))=chrom2(i,(M*(j-1)+1):(M*j)))*(1-rand^((1-gen/2000)^10));newchrom3(i,(1*(j-1)+1):(1*j)=chrom3(i,(1*(j-1)+1):(1*j) + ...([165 150 200 100 150 300 200]-chrom3(i,(1*(j-1)+1):(1*j)))*(1-rand^((1*gen/2000)^10));elseif round(rand)=lnewChrom2(i,(M*(j-1)+1):(M*j) ) = Chrom2 (i,(M*(j-1)+1):(M*j)) ...(chrom2(i,(M*(j-1)+1):(M*j))-[00])*(1-rand^((1-gen/2000)^10));newchrom3(i,(1*(j-1)+1):(1*j)):chrom3(i,(1*(j-1)+1):(1*j)) ...(chrom3(i,(1*(j-1)+1):(N))-[0 0 0 0 0 0 0 0])*(1-rand^((1*gen/2000)^10));endendendendnewchrom1=chrom1;newchrom=[newchrom1 newchrom2 newchrom3];endendnewchrom1=chrom1;newchrom=[newchrom1 newchrom2 newchrom3];bestindividualbestindividual=columms 1 through 171.0000 1.0000 0 0 1.000 80.3686 20.6636 0 0 23.7458 50.7648 63.57695 0 0 123.6753 39.7648 19.5769 0 0 289.6753 columms 18 through 3419.5849 50.7648 45.7985 64.2875 19.9768 53.6843 135.6752 32.6437 24.5342 27.9485 9.9873 24.7638 125.7958 27.8745 columms 35 through 510 0 0 0 0 0 00 0 0 0 0 0 0columms 52 through 5595.7482 35.9862 83.4768 28.4769 74.5867 113.4786 44.4873。
MATLAB程序设计教程总结MATLAB程序设计是一项广泛应用于科学计算、工程仿真、数据分析和可视化等领域的编程语言和环境。
它以其简单易用、高效快捷的特点,受到了众多研究者、工程师和学生的喜爱。
下面是对MATLAB程序设计教程的总结。
整体结构:MATLAB程序一般由多个函数文件和脚本文件组成,其中主要的计算功能和算法实现都在函数文件中完成,而脚本文件主要用于调用和展示函数文件的功能。
1. 变量和数据类型:MATLAB中的变量是不需要事先声明的,可以根据需要直接赋值创建。
常用的数据类型有数值型、字符串、逻辑型和结构数组等。
数值型包括整型、浮点型和复数型,可以进行基本的算术运算,并且具有丰富的内置数学函数。
2. 控制流程:MATLAB中的控制流程语句包括条件语句和循环语句。
条件语句包括if-else语句和switch-case语句,用于根据不同的条件执行不同的代码块。
循环语句包括for循环和while循环,用于重复执行某个代码块。
3. 函数和脚本:函数是MATLAB程序设计的核心,用于封装和重复使用代码。
函数文件以.m为后缀名,包含函数名、输入参数和输出参数等。
脚本文件以.m为后缀名,也是一段可执行的MATLAB代码,主要用于调用和展示函数文件中的功能。
4. 矩阵和向量运算:MATLAB以矩阵和向量为基本的数据结构,支持矩阵和向量的运算和操作。
矩阵和向量运算可以使用MATLAB提供的丰富的运算符和函数,如加法、减法、乘法、除法、转置、逆矩阵、特征值等。
5. 图形绘制和数据可视化:MATLAB提供了强大的图形绘制功能,可以用于生成各种类型的二维和三维图形。
可以通过简单的命令和函数实现数据的可视化,如线图、散点图、柱状图、三维图等。
同时,还可以通过设置图形属性和样式来美化图形的效果。
6. 文件输入输出和数据处理:MATLAB可以进行文件的读写操作,包括文本文件、二进制文件、图像文件等。
可以使用内置的函数读取和处理数据文件,进行数据分析和处理。