资源描述:
《Matlab编程技巧二则_代西武.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第24卷第2期北京建筑工程学院学报Vol.24No.22008年6月JournalofBeijingUniversityofCivilEngineeringandArchitectureJun.2008文章编号:1004-6011(2008)02-0059-02Matlab编程技巧二则代西武(北京建筑工程学院理学院,北京100044)摘要:通过两个示例,研究了Matlab编程的向量化方法,并且与一般的编程方法进行比较,发现向量化编程确实很简单.关键词:Matlab;向量化;编程中图分类号:TP319文献标志码:ATwoTipsinMatlabPr
2、ogrammingDaiXiwu(SchoolofScience,BUCEABeijing100044)Abstract:ThevectorizationprogrammingmethodinMatlabisstudiedbytwoexamples.Comparedtothepopularprogrammingmethod,thevectorizationprogrammingmethodisverysimple.Keywords:MATLAB;vectorization;programming我们学习计算机编程,一般是从BASIC、C语言矩阵的副转
3、置的定义.等开始的,对数组或矩阵的操作运算都是用循环语定义:对于给定的矩阵A,将其第一行颠倒后句来实现的,比较麻烦,并且受到了一些限制,如:变变为最后一列,第二行颠倒后变为倒数第二列,量(特别是数组变量)在使用之前必须定义、只能对,直到最后一行颠倒后变为第一列,这样得到的S数组的单个元素进行存储操作等.而Matlab中的新矩阵称为原来矩阵的副转置,记为A.矩阵运算很丰富,也很灵活,对矩阵的操作运算非常其实,对于方阵而言,其副转置,可以理解为是方便,可以对矩阵进行整体操作,在用Matlab编写按照副对角线对称得到的矩阵.下面的例子是矩阵S程序时,应该摒
4、弃原来的思维习惯,充分利用MatA及其副转置A.lab矩阵的整体操作功能,即学会向量化编程.下129828632面以两个例子说明向量化编程方法,并且与一般的13993SA=,A=7979998编程方法进行比较,发现向量化编程确实简单.1497691413129781矩阵的副转置下面的程序段给出了计算矩阵副转置的三种方法:%Initialthematrixa.在线性代数里,我们对矩阵的转置是很熟悉的,a=[12982也就是将一个矩阵的第一行变为第一列,第二行变13993为第二列,,直到最后一行变为最后一列,这样14976得到的新矩阵
5、就是原来矩阵的转置.下面我们给出978]收稿日期:2007-04-14作者简介:代西武(1963),男,副教授,硕士,研究方向:计算机科学、图论、数学建模.60北京建筑工程学院学报2008年%Thefirstmethod,i.e.Clanguageversion.边保持不动.如:A矩阵经过将含有零元素的行左[m,n]=size(a);右颠倒后得到矩阵Bd=zeros(n,m);35201130fori=1:m93620B=forj=1:n2211000d(n-j+1,m-i+1)=a(i,j);56776699end下面,我们给出
6、解决这一问题的两个不同的程end序段,首先给出用C语言的思想方法编写出的Matlab程序段如下:%Thesecondmethod,i.e.Vectorizationpro%Chosesomelines,toflipthenon-zeroselementsgrammingbyusingtheMatlabfunctions.byleftandrightway.c=fliplr(a);%Thefirstversion,i.e.theClanguageversion.c=flipud(c);a=[35201130;c=c26390;112
7、2000;%Thethirdmethod,i.e.Vectorizationpro56776699];gramming.[m,n]=size(a);b=a(end:-1:1,end:-1:1)te=zeros(1,n);fori=1:m从程序段中,可以看出这三种方法的特点:第一ifa(i,n)==0种方法是按照C语言的思想方法编写出来的,用到k=0;了二重循环,比较繁琐,在Matlab编程时应当避免forj=n:-1:1使用这样的方法.第二种方法是向量化编程,有三ifa(i,j)~=0个语句,利用了Matla
8、b的两个函数fliplr、flipud,第k=k+1;三个语句是求矩