matlab心得
学习Matlab心得体会
学习Matlab已经有一段时间了,对Matlab编程有了一定的了解。下面谈谈自己近期的学习心得。
第一节的时候我们对Matlab有了初步的认识:Matlab是“矩阵实验室(matrixlaboratoy)”的缩写,它是一种与数学水平密切相关的算法语言,专门针对科学、工程计算及绘图的需求。Matlab的应用范围非常广,包括信号和图像处理、通讯、控制系统设计、测试和处理、财务建模和分析以及计算机生物学等众多应用领域。附加的工具箱扩展了Matlab环境,以解决这些领域的特定性问题。比如说在自动控制理论中用的比较多的是根轨迹,相平面,传递函数,拉普拉斯变换,乃氏曲线等。在电机控制里面还有很多仿真实验,也经常用,对于辅助分析,也是很好用的。
我们已经学习过C语言,不难发现Matlab的编程基本语法学习起来很快的,和C语言很类似,而且支持C语言函数的,或者说函数就是用C语言编的。大一时学习线性代数,对矩阵又有了一定的了解,为今天学习Matlab打下了一定的基础。从matlab的名字的来源可以看出,它以矩阵运算常见,在当今的科学计算中,几乎无处不用矩阵运算,这是它的优势得到了充分的体现。
随着学习的课时的增加,我们对Matlab的有了深入而实质性的了解。首先我们学习了Matlab的数学运算、程序设计、程序调试、Matlab绘图及图形句柄,最后我们又学习了Matlab的图形用户界面设计。经过几次实验课,我们学会了M文件编程及程序调试,学会利用help这一命令对程序进行解释。
Matlab是以解释方式工作的,即它对每条语句解释后立即执行,若有错误也立即做出反应,便于对程序进行修改,大大减轻了编程和调试的工作量。它灵活、方便,程序调试手段丰富,调试速度快。Matlab语言像Basic和C语言一样规定了矩阵的算算术运算符、关系运算符、逻辑运算符、条件运算符及赋值运算符等。Matlab的绘图功是十分方便的,在调用绘图函数时调整自变量可绘制出不同颜色的点、线、复线或多重线,这是通用的编程语言所不及的。Matlab的工作环境主要由命令窗口、图形窗口、和文本编辑窗口组成。
当然,matlab与其它计算机语言相比,有其独特的优点。特点如下:Matlab把编辑、编译、连接以及执行融为一体,加快了编写、修改、和调试程序的速度,或者说是一种比VB还要简单的语言。Matlab语言的内容极为丰富,它的各种函数都与数学领域有关,它的起点高,编程效率高,用户使用方便,智能化程度高,人机交互性好,功能丰富,可扩展性强。
通过这段时间的理论学习及实验,我觉得要提高matlab编程能力的方法有以下几点:(1)利用help,lookfor等功能对程序进行编译修改。(2)多上网查资料,上论坛,搜索帖子、发帖子问人(3)阅读别人、特别是一些高级技术人员的程序,在阅读的过程中进行学习,学习别人的编程方法。(4)还要有一本matlab的函数工具词典,可以尽量多的熟悉matlab自带的函数,因为matlab自带的函数特别多,基本上能够满足一般的数据和矩阵的计算。当然了,正如所有的程序语言一样,“3分课本7分上机”,一定要动手才行,不能光看。多想、多思考、多尝试,才是正路。
记得上第一节课时,老师给我们放得ppt上有这样一句话:学会Matlab将改变你的一生,网络对你的改变将远远的超过一台独立的计算机!作为一名电气工程及其自动化的一名学生,学好Matlab是非常有用的,扩展就业方向,为将来就业打下良好的基础!
最后,感谢老师您这么久以来对我们的谆谆教导!我们不会忘记您对我们的细心辅导,不会忘记您在我们瞌睡的时候给我们的讲的故事
扩展阅读:MATLAB 心得
Chapter1概述
1.1简介
MATLAB是“矩阵实验室(MatrixLaboratory)”的缩写,它是一种以矩阵运算为基础的交互式程序语言,是专门针对科学与工程中计算和绘图的需求而开发的。
1.2特点
MATLAB是以解释方式工作的,即它对每条语句解释后立即执行,若有错误也立即作出反应,便于编程者马上改正。
1.3界面
1.菜单栏
菜单栏包括7个菜单项。其中,File用于相关文件的处理,Edit实现命令窗口的编辑操作,Debug用来调试程序,Parallel用来进行配置管理和并行计算设置,Desktop用来是指窗口的实现方式,Window用来关闭所有使用的编辑器窗口或选择活动窗口,Help用来选择打开不同的帮助系统。
2.CommandWindow(命令窗口)
键盘上的ESC可恢复命令输入的空白状态;方向键中的上箭头可调出上一行的历史命令。想查某函数的帮助时,如linespace函数,键入doclinespace即可。3.Workspace(工作空间)
储存着当前窗口中所有变量的名称、类型、字节数等内容。4.Commandhistory(历史命令)5.Currentfolder(当前文件夹)
修改默认目录的方法:对桌面上的MATLAB快捷方式右键选“属性”,将起始位置改为“C:\\Users\\冯亚飞\\Documents\\MATLAB”即可。6.Details
如果Editor中有“%%通信程序”这样的题头时,它会在Details窗口内显示出来。7.Editor(文本编辑窗口)
可在CommandWindow中直接键入edit来新建一个Editor。快捷键:ctrl+R,选中行加上注释符“%”;ctrl+T,去掉注释符;ctrl+回车,运行区域内的程序(所谓区域指的是用两个注释符“%%”分隔开的区域);8.Figure(图形窗口)
1.4退出方法
键入exit,另一种是直接单击右上角的×号,后者是非正常退出,该过程中所有的输入
命令将不记录在Commandhistory窗口中,所以应当尽量避免使用。
Chapter2基本语法
2.1变量及其赋值
2.1.1矩阵及其元素的赋值
MATLAB内部只有一种数据格式,那就是双精度(即64位)二进制,对应于十进制16位有效数和±308次幂。
MATLAB中的变量或常量都代表矩阵,标量应看做1×1的矩阵。矩阵的值放在方括号中,同一行中各元素之间以逗号或空格分开,不同行则以分号隔开,语句的结尾可用“回车”或逗号,此时会立即显示运算结果。如果不希望显示结果,就以分号结尾。
变量的元素用圆括号中的数字(也称为下标)来注明,一维矩阵(也称数组或向量)中的元素用一个下标表示;二维矩阵可有两个下标数,以逗号分开。如果赋值元素的下标超出原来矩阵的大小,矩阵的行列会自动扩展,并且跳空的元素被自动地赋值0.这种自动扩展维数的功能只适用于赋值语句。在其他语句中若出现超维调用的情况,MATLAB将给出出错提示。
给全行赋值可用冒号“:”。
若想抽去矩阵的某一行或列,可以利用空矩阵[]的概念。比如:A([245]),:)=[],表示抽去矩阵A的2、4、5行。2.1.2复数
MATLAB中的每一个元素都可以是复数,实数是复数的特例。
运算符“’”表示把矩阵作共轭转置,即把它的行列互换,同时把各元素的虚部反号。函数conj则只把各元素的虚部反号,即只取共轭。所以若想求转置而不要共轭,就要用conj和“’”结合起来完成。2.1.3基本矩阵和函数
(1)zeros(m,n),ones(m,n),rand(m,n)随机数矩阵,randn(m,n)正态随机数矩阵,eye(n)单位矩阵(方阵)。
(2)linespace(a,b,n)。均分向量,在a与b之间均分地产生n个点值,形成1×n元向量。
(3)size(y)是求多维矩阵y的各维长度,一般有两个输出量。length(x)是返回一维矩阵x的长度,只有一个输出量。length不区分列或行。
(4)magic(n)。魔方矩阵的特点是其元素由1到n×n的自然数组成;每行每列及两对角线上的元素之和均等于(n3+n)/2。
(5)eye(n)。单位矩阵是n×n元的方阵,其对角线上的元素为1,其余元素均为0。(对角线指的是从左上角到右下角)
2.2矩阵的初等运算
如果想针对矩阵中对应位置的元素进行运算时,一定要用点乘、点除或点幂。
2.2.1矩阵的乘法
m×p阶矩阵A与p×n阶矩阵B的乘积C是一个m×n阶矩阵,它的任何一个元素C(i,j)的值为A阵的第i行和B阵的第j列对应元素乘积的和。对于标量A,B,因为n,p,m均为1,矩阵乘法就退化为普通数的乘法。
注意矩阵乘法的左乘和右乘的结果一般不同,只有单位矩阵例外。如eye(m)*A=A*eye(m)=A。2.2.2矩阵的除法
矩阵除法是MATLAB从逆矩阵的概念引申来的。先介绍逆矩阵的定义,对于任意n×n阶方阵A,如果能找到一个同阶的方阵V,使
A*V=I其中,I为n阶的单位矩阵eye(n),则V就是A的逆矩阵,用数学符号表示为V=A-1。
逆矩阵V存在的条件是A的行列式det(A)不等于0。在MATLAB中可用函数inv求逆矩阵,键入V=inv(A),就可得到A的逆矩阵V。
现在来看方程D*X=B,设X为未知矩阵,等式两端同时左乘以inv(D),即
Inv(D)*D*X=inv(D)*B
因为等式左端inv(D)*D=I,而I*X=X,所以上式成为
X=inv(D)*B=D\\B把D的逆矩阵左乘以B,MATLAB就记作D\\,称之为“左除”。从D*X=B的阶数检验可知,B与D的行数相等。因此,左除时的阶数检验条件是:两矩阵的行数必须相等。
如果原始方程的未知数向量在左而系数矩阵在右,即X*D=B,则按上述同样的方法可以写出
X=B*inv(D)=B/D把D的逆矩阵右乘以B,MATLAB就记作/D,称之为“右除”。同理,右除时的阶数检验条件是:两矩阵的列数必须相等。
矩阵除法可以用来方便地解线性方程组。但是当方程数少于未知数个数时,仍然可用除法符号求出解,但它只是一个特殊解。
2.3元素群运算
元素群运算指的是矩阵中所有元素按照单个元素进行运算。为了与矩阵作为整体的运算符号相区别,要在运算符“*、/、\\、^”前加一点符号“.”,以表示进行的是元素群运算。2.3.1数组及其赋值
MATLAB提供了两种为等间隔数组赋值的简易方法。(1)t=[初值:增量:终值]。如t=[0:0.02:1]
增量可为负值;当增量为1时,可略去增量值。(2)用linespace函数,具体参见2.1.3。
有时要求自变量按等比级数赋值,在设频率轴时往往如此,可用logspace函数。如键入W=logspace(0,1,11)。它的意义是将10的0至1次幂之间按幂等分(即数是等比的)为11个点。
2.3.2元素群函数
下表是初等数学函数库中的常用函数,均可用于元素群运算,即其自变量都可以是任意阶的矩阵。
类别三角函数指数函数复数取整函数初等数学函数库(elfun)
函数名及其意义sincostancot余切asin反正弦acos反余弦atan反正切exp以e为底的指数log自然对数log2以2为底的指数log10以10为底的指数sqrt方根abs绝对值和复数模值angle相角real实部imag虚部isreal是实数时为真round四舍五入为整数fix向0舍入为整数floor向负∞舍入为整数ceil向∞舍入为整数rem(a,b)是a整除b,求余数sod(x,m)是x整除m取正余数pow2是2的幂conj共轭复数sign符号函数2.4逻辑判断及流程控制
2.4.1关系运算
所谓关系运算,是指两元素之间数值的比较,它是对矩阵的各个元素进行元素群运算,一共有六种可能,具体如下:
<小于大于>=大于等于==等于~=不等于关系运算的结果只有两种可能,即0(假)或1(真)。2.4.2逻辑运算&逻辑与|逻辑或~逻辑非xor(A,B)异或同样用于元素群,可得出同阶的01矩阵。逻辑量只能取0(假)和1(真)两个值。为了按列、按行判断一群元素的逻辑值,它又增加两种对元素群的逻辑运算all(全为真)和any(不全为假)。fori=1:n%%增量为1的话可以省略不写2.4.3流程控制语句plot(s_x(j,i);%%同样不能加括号(1)if语句endifa==1B=2;C=2;%%此行中不能加括号switch表达式(标量或字符串)elseifa==2%%切记else和if要连起来写case值1B=3;C=3;语句组Aelsecase值2B=4;C=4;语句组Bend%%别忘了end….(2)while语句otherwise(3)for语句语句组N其结构形式为end%%别忘了endfork=初值:增量:终值语句组A,end(4)switch语句
另外break是终止循环的命令,在循环语句中,可用它在一定条件下跳出循环。在多重循环中,break只能使程序跳出包含它的最内部的那个循环。
2.5基本绘图方法
2.5.1x-y直角坐标中的二维曲线plot命令(1)plot(y)输入一个数组的情况以y中元素的下标作为x坐标,y中元素的值作为y坐标,一一对应画在x-y坐标平面图上,而且将各点以直线相连。y=[1:10];figure(2);%%新建图形2号窗口plot(y);title(‘MyFirstPlot’);%%给图加上标题xlabel(‘n’);ylabel(‘Y’);%%给坐标轴加上说明gridon;%%添加网格,gridoff去掉网格gtext(‘where’);%%利用鼠标拖动来确定标注文字的位置
(2)plot(x,y)输入两个数组的情况2.5.2线型、点型和颜色
为了设定线型,在输入变量组的后面加一个引号,在引号内部放入线型和颜色的标志符,如plot(x,y,’*b’,x1,y1,’:r’)。
具体可以键入doclinespec查询。2.5.3多条曲线的绘制
(1)plot(t,[y1,y2,…])其中t是向量,y=[y1,y2…]是矩阵。(2)用hold命令
在画完一张图后用命令“holdon”保持住,再画下一条曲线。注意及时解除保持状态,即键入“holdoff”,否则,以后的图都会叠加在此图上,造成混乱。(3)plot(x,y,’*b’,x1,y1,’:r’)(4)plotyy(t1,y1,t2,y2)
plotyy设有两个纵坐标,以便绘制两个y尺度不同的变量,但x轴仍只能用一个比例尺。左纵坐标是对y1的,右纵坐标是对y3的。曲线的标注用gtext命令。2.5.4其他二维绘图命令
(1)subplot(n,m,p)命令:将图形窗口分成n×m个子图,在第p个子图处绘制图形。
subplot(2,2,1),plot(t1,y1);
fill(t1,y1,’r’);%%在曲线和坐标轴之间的封闭区填以指定颜色
title(‘fill(t1,y1,’’r’’)’);%%r前后的引号写成两个引号,这是因为它处在title后的
%%引号内。MATLAB规定,这种引号必须写成两个,以免
%%被误认为是末尾的引号。
subplot(2,2,2),plot(t2,y2);
subplot(2,2,3),plot(t3,y3);
subplot(2,2,4),plot(t4,y4);%%再键入subplot(1,1,1)命令可取消子图,转回全屏幕绘图。(2)其他坐标系
①polar(theta,rho)命令:极坐标绘图,以角度theta为一个坐标,单位是弧度,另外一个坐标是矢径rho。
②loglog绘出纵、横坐标刻度均为log10的对数图。
③semilogx使用半对数刻度绘图,x轴为log10刻度,y轴为线性刻度。④semilogy使用半对数刻度绘图,y轴为log10刻度,x轴为线性刻度。(3)复数的绘图
当plot(z)中的z为复数单变量时(即含有非零的虚部),MATLAB把复数的实部作为x坐标,虚部作为y坐标进行绘图,即相当于plot(real(z),imag(z))。如果是双变量如plot(t,z),则z中的虚数部分将被丢弃。要在复平面内绘出多条图线,必须用hold命令,或把多根曲线的实部和虚部明确地写出,作为plot函数的输入变元,即plot(real(z),imag(z),real(z2),imag(z2))。
(4)坐标比例和尺寸的设定axis命令
v=axis,返回当前图形边界的四元行向量,即v=[xmin,xmax,ymin,ymax]。axis(v)(其中v是一个四元向量),将坐标轴设定在v规定的范围内。
axis的另外一个功能是控制图形的纵横比。axis(‘square’)或axis(‘equal’)使屏幕上x与y的比例尺相同,在这种方式下,斜率为1的直线的倾斜角为45°。(5)图形窗口中的直接编辑
指的就是图形窗口顶部的菜单和按钮。可以自行摸索试验以掌握他们的功能和用法,深入一些的问题需参阅手册“UsingMATLABGraphics”。2.5.5三维曲线和曲面具体用法待定。2.5.6动画
具体待定。示例程序:clear;axisequal;%%因为产生的图形是圆形,故把坐标设成相等比例m=moviein(16);%%为变量m预留16幅图的存储空间forj=1:16%%作16次循环plot(fft(eye(j+16)));%%画图m(:,j)=getframe;%%依次存入m中endmovie(m,30)%%每秒30帧的速度播放m中的图形2.6M文件及程序调试
M文件可分为两种:一种是主程序,也称为主程序文件(ScriptFile),是由用户为解决特定的问题而编制的;另一种是子程序,也称为函数文件(FunctionFile),它必须由其他M文件来调用,函数文件可以进行递归调用(即自己调用自己)。2.6.1主程序文件其格式特征如下:
(1)用clear,closeall,clc等语句开始,以避免其他已执行过的程序残留数据对本程序的影响。
前几行通常是对程序用途的说明,利用注释符“%”来注释,特别是在运行时对用户输入数据的要求,更要叙述清楚,不然别人看不懂也用不成,连自己日后也会遗忘。
(2)以下是程序的主体。如果文件中有全局变量,即在子程序中与主程序共用的变量,应在程序的起始部分注明,语句是Global变量名1变量名2…
键入程序时最好从头到尾用英文,不要插入汉字。汉字可在程序调试完毕后加入。注意在菜单项【Text】下,选【SmartIndent】项可以自动对程序进行缩进排版。
(3)文件名不允许用汉字。2.6.2人机交互命令
(1)pause(n)命令:程序执行到此处暂停n秒,再继续执行。如果没有括号参数,则等待用户键入任意键后才继续执行。
(2)input(‘提示文字’):程序执行到此处暂停,在屏幕上显示引号中的提示字符串,要求用户输入数据。如程序为x=input(‘x=’),则屏幕上显示“x=”,输入的数据将赋值给x。数据输入后程序继续执行。imput命令也可以接受字符,其格式为y=input(‘提示文字’,’s’),此时y将等于输入的字符串。
(3)ctrl+C键:强行停止程序运行的命令。在发现程序运行有错或运行时间太长时,可用此方法中途终止它。2.6.3函数文件
函数文件是用来定义子程序的。它与程序文件的主要区别有三点:①由function起头,后跟的函数名必须与文件名相同;②有输入输出变量,可进行变量传递;
③除非用global声明,程序中的变量均为局部变量,运行后不保存在workspace中。先看一个简单的函数文件,其文件名为mean.m。functiony=mean(x)%MEAN求平均值。对于向量,mean(x)返回该向量x中各元素的平均值%对于矩阵,mean(x)是一个包含各列元素平均值的行向量[m,n]=size(x);ifm==1m=n;endy=sum(x)/m文件的第一条语句定义了函数名、输入变元以及输出变元。如果没有这条语句,该文件就成为程序文件,而不再是函数文件了。输入变元和输出变元都可以有若干个,但必须在第一条语句中明确地列出。
程序中的运算都采用元素群算法,以保证此函数可按元素群调用。MATLAB中几乎所有的函数都能用元素群运算,所以我们自编的子程序,也要尽量满足元素群算法的要求,即子程序主体中均用点乘、点幂等运算符。2.6.4内联函数和匿名函数
(1)用上节方法来定义函数,必须在主程序之外重新建立一个函数文件,这不大方便。MATLAB还提供了一种简便的、直接在主程序文件中定义函数的方法,称为内联函数。它的调用格式为fun=inline(‘函数内容’,自变量列表)例如f(x,y)=x2+xy2就可以用f=inline(‘x.^2+x.*y.^2’,’x’,’y’)
来直接定义。不过这样的格式只能用来定义比较简单的、用一条语句就能求出结果的函数形式。
(2)匿名函数式MATLAB7.x版本给出的新的函数定义形式,它的基本格式为fun=@(自变量列表)函数内容例如f=@(x,y)x.^2+x.*y.^2
可见,它和inline函数很相似,但键入量更少,更简洁。更重要的是,该函数允许直接使用MATLAB工作空间中的变量。例如,在MATLAB工作空间中已经有了a和b,则匿名函数f=@(x,y)cos(a*x+b*y)就可以成立,无需把a、b列入变量列表中,所以使数学函数的定义更加方便。
2.6.5快捷键【Tab】(或【Ctrl+]】)增加缩进(对多行有效)【Ctrl+[】--减少缩进(对多行有效)
【Ctrl+I】--自动缩进(即自动排版,对多行有效)【Ctrl+R】——注释(对多行有效)【Ctrl+T】——去掉注释(对多行有效)【F12】——设置或取消断点【F5】——运行程序
Chapter3MATLAB的开发环境和工具
3.1MATLAB与其他软件的接口关系
3.1.1日期和时间命令
有关时间和日期方面的命令,都是从操作系统中提取数据的。这些命令见下表。
时间和日期函数库(timefun)
类别当前日期函数名nowdatedatenumdatestrcalenderweekdaycputimetic,toc意义当前日期和时间的时间数当前日期的字符串成序列的日期数日期的字符串格式日历星期数以秒记的CPU时间秒表定时器的启动和停止dateveceomdaydateticketimepause函数名clock日期向量月末日的星期数日期的格式设定经历时间暂停等待时间意义当前日期的日期向量基本函数日期函数定时函数下面介绍如何确定做某种计算所需的时间。例如,想看看生成1个100×100阶随机矩阵并作求逆运算所需的时间,可以用下列三组语句之一:(1)t0=clock;y=inv(ran(100,100));etime(clock,t0)(2)t=cputime;y=inv(ran(100,100));cputime-t(3)tic;y=inv(ran(100,100));toc
这三种方法的差别在于:第一种方法要先后两次提取年、月、日、时、分、秒的数据,并将他们相减;第二种方法以开机时间为基准;第三种方法则用tic把秒表置零,求得的toc就是经历的时间。
3.2MATLAB的文件管理系统
3.2.1安装后的MATLAB文件管理系统
安装后的MATLAB根目录(通常表示为MATLABroot)下,至少有bin、extern、help、toolbox这四个子目录,其中子目录bin包含了MATLAB所要用到的二进制文件。启动MATLAB的执行文件matlab.exe就在这个目录中,双击这个文件就可以启动MATLAB软件。子目录extern
包含了MATLAB所要用到的外部文件。子目录help包含了MATLAB的各种帮助文件,如果有下一级子目录pdf_doc,则其中将包括MATLAB及其工具箱的说明书,那是十分有用的资料。子目录toolbox包含了MATLAB的各种函数库及已装入的作为下一级子目录的工具箱名称等,它至少应有local和matlab两项,其中matlab(注意用的是小写)又有20多个子目录,分别是本书第1~4章介绍的MATLAB中的基本函数库。通常在MATLAB根目录下,还会自动建立一个用户的子目录work,以便把用户自编的程序存在这个子目录下,免得与系统中原有的文件混淆。
友情提示:本文中关于《matlab心得》给出的范例仅供您参考拓展思维使用,matlab心得:该篇文章建议您自主创作。
来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。