Matlab快速学习手册.docx
《Matlab快速学习手册.docx》由会员分享,可在线阅读,更多相关《Matlab快速学习手册.docx(46页珍藏版)》请在冰豆网上搜索。
Matlab快速学习手册
Matlab快速学习手册
一、矩阵
1矩阵表示
由m行n列构成的数组称为(m×n)阶矩阵。
用"[]"方括号定义矩阵;其中方括号内","逗号或""空格号分隔矩阵列数值;";"分号或"Enter"回车键分隔矩阵行数值。
例:
a=[a11a12a13;a21a22a23]或a=[a11,a12,a13;a21,a22,a23]定义了一个2*3阶矩阵a。
aij可以为数值、变量、表达式或字符串,如为数值与变量得先赋值,表达式和变量可以以任何组合形式出现,字符串须每一行中的字母个数相等,调用时缺省状态按行顺序取字母,如a
(1)为第一行第一个字母。
2运算方法:
A+B,A-B,8A,A的平方,A*B,矩阵A的逆.
A+B:
矩阵相加>>A=ones(3);B=magic(3);C=A+B
A-B:
矩阵相减>>%同上C=A-B
8A:
数与矩阵相乘>>8*A
A的平方,>>A.^2;
A*B矩阵相乘:
A*B矩阵相乘A.*B对应元素相乘
矩阵A的逆.inv(A);
注意:
像带点"."时对应元素相乘((如A.*B)),不带时矩阵相乘(如A*B).
3常用函数如下:
函数命令说明
size(a)
[d1,d2,d3,..]=size(a)求矩阵的大小,对m*n二维矩阵,第一个为行数m,第二个为
列数n;
对多维矩阵,第N个为矩阵第N维的长度。
cat(k,a,b)矩阵合并,运行a=magic(3)
b=pascal(3)
c=cat(4,a,b)
改4为3或2或1,自己体会合并后的效果。
k=1,合并后形如[a;b],行添加矩阵(要求a,b的列数相等才能合并);
k=2,合并后形如[a,b],列添加矩阵(要求a,b的行数相等才能合并),以此类推,n维的矩阵合并,要求n-1维维数相等才可以)。
fliplr(a)矩阵左右翻转
flipud(a)矩阵上下翻转
rot90(a)
rot90(a,k)矩阵逆时针旋转90度(把你的头顺时针旋转90看原数就可以知道结果了)
k参数定义为逆时针旋转90*k度。
flipdim(a,k)矩阵对应维数数值翻转,如k=1时,行(上下)翻转,k=2时,列(左右)翻转。
tril(a)
tril(a,k)矩阵的下三角部分(包括对角线元素),对应k=0时的取值数。
k参数设置为正负数值对应对角线向上或向下移动k行划分下三角元素。
triu(a)
tril(a,k)矩阵的上三角部分(包括对角线元素),对应k=0时的取值数。
k参数设置为正负数值对应对角线向上或向下移动k行划分上三角元素。
diag(a)
diag(a,k)生成对角矩阵或取出对角元素,对应k=0时的取值数。
k参数设置为正负数值对应对角线向上或向下移动k行取对角元素或生成对角矩阵。
repmat(a,m,n)矩阵复制,把矩阵a作为一个单位计算,复制成m*n的矩阵,其每
一元素都含一个矩阵a,实际结果为一个size(a,1)*m行,size(a,2)*n列的矩阵。
w=meshgrid(s,t)
[u,v]=meshgrid(s,t)生成行m=size(t,1)*size(t,2),列n=size(s,1)*size(s,2))
阶的两个矩阵。
其中u为按行顺序取s的n个矩阵元数,按列排列重复m行,v为按列顺序取t的m个矩阵元数,按行排列重复n列。
只生成一个矩阵时,w=u。
eye(a)
eye(a,k)生成a阶单位方阵
k参数设置为生成a×k阶单位矩阵,即生成a阶单位方阵后,取前k列,不足补0。
ones(a)
ones(a,k)生成a阶全1方阵
k参数设置生成a×k阶全1矩阵。
zeros(a)
zeros(a,k)生成a阶全0方阵
k参数设置生成a×k阶全0矩阵。
inv(a)生成a的逆矩阵
%l求矩阵的长度的函数
a=[10,2,12;34,2,4;98,34,6];
size(a)
%
%ans=
%
%33
%
length(a)
%
%ans=
%
%3
%1.通过在矩阵变量后加’的方法来表示转置运算
a=[10,2,12;34,2,4;98,34,6];
a'
%
%ans=
%
%103498
%
%2234
%
%1246
%2.矩阵求逆
inv(a)
%ans=
%
%-0.01160.0372-0.0015
%
%0.0176-0.10470.0345
%
%0.0901-0.0135-0.0045
%3.矩阵求伪逆
pinv(a)
%
%ans=
%
%-0.01160.0372-0.0015
%
%0.0176-0.10470.0345
%
%0.0901-0.0135-0.0045
%
%4.左右反转
fliplr(a)
%
%ans=
%
%12210
%
%4234
%
%63498
%
%5.矩阵的特征值
[u,v]=eig(a)
%u=
%
%-0.29600.3635-0.3600
%
%-0.2925-0.41280.7886
%
%-0.9093-0.83520.4985
%
%v=
%
%48.839500
%
%0-19.84510
%
%00-10.9943
%6.上下反转
flipud(a)
%ans=
%
%98346
%
%3424
%
%10212
%
%7.旋转90度
rot90(a)
%
%ans=
%
%1246
%
%2234
%
%103498
%
%8.取出上三角和下三角
triu(a)
%
%ans=
%
%10212
%
%024
%
%006
tril(a)
%
%ans=
%
%1000
%
%3420
%
%98346
[l,u]=lu(a)
%
%l=
%
%0.10200.15001.0000
%
%0.34691.00000
%
%1.000000
%
%u=
%
%98.000034.00006.0000
%
%0-9.79591.9184
%
%0011.1000
%
%9.正交分解
[q,r]=qr(a)
%
%q=
%
%-0.0960-0.1232-0.9877
%
%-0.3263-0.93360.1482
%
%-0.94040.33650.0494
%
%r=
%
%-104.2113-32.8179-8.0989
%
%09.3265-3.1941
%
%00-10.9638
%
%10.奇异值分解
[u,s,v]=svd(a)
%
%u=
%
%0.1003-0.88570.4532
%
%0.3031-0.4066-0.8618
%
%0.94770.22390.2277
%
%s=
%
%109.589500
%
%012.03730
%
%008.0778
%
%v=
%
%0.9506-0.0619-0.3041
%
%0.30140.41760.8572
%
%0.0739-0.90650.4156
%
%11.求矩阵的范数
norm(a)
%
%ans=
%
%109.5895
norm(a,1)
%
%ans=
%
%142
norm(a,inf)
%
%ans=
%
%138
二、GUI控件的属性
ToggleButton的value属性的意义和应用一般来说GUI中的value属性值是表征该控件当前所处的状态,我们可以通过get获取其属性从而了解控件当前状态,另外通过set设置属性达到控制控件状态的目的,在通常情况下,value属性的取值又与控件min和max属性有关的,默认情况下max=1,min=0,value=0,而value==max时一般表示被选中或者处于按下状态,value==min时一般表示未选中或者弹起状态,但是max和min的值我们可以根据需要重新人工设置,不一定要1和0,但是一般不建议改动,除非万不得已,比如text控件,为了输入多行文字,必须将max设置为大于1的整数才可以。
GUI中提供了两个【确定】控件,这就是PushButton和ToggleButton,这两个没有本质的区别,只是PushButton是一个单击触发按钮完成以后恢复原始状态,,而ToggleButton会有两种状态,按下和弹起,我们可以根据需要设置两种状态分别对应不同的结果,但是我们如何知道当前状态到底是【按下】还是【弹起】状态呢?
这就需要我们用到ToggleButton的value属性了,当处于【按下】时,value==max,而【弹起】时,value==min。
比如在ToggleButton_tag_creatfcn()中输
set(hObject,'max',100,'min',10);
set(hObject,'value',10);
在ToggleButton_tag_callback()中输入
value=get(hObject,'value');
max=get(hObject,'max');
min=get(hObject,'min');
ifvalue==max
set(hObject,'string',['value='num2str(value)',max='num2str(max)',sothestateisdown']);
else
set(hObject,'string',['value='num2str(value)',min='num2str(min)',sothestateisup']);
end
效果
RadioButton、CheckBox的value属性的应用其实RadioButton、CheckBox的value的效果意义都和ToggleButton一样.
当某个RadioButton、CheckBox被选中时,该控件的value==max,否则value==min,另外我们知道RadioButton(单选框)具有排它性,也就是说每次只能选中一个,而CheckBox(复选框)可以多选,为了保证RadioButton具有排他性,我们可将所有的RadioButton添加到一个ButtonGroup中EditText的Max和Mini的意义和应用EditText的value属性没有什么实际意义,基本用不上.
但是max和min却有较大意义,当max-min>1时可以输入多行文本,否则只能输入单行文本(注意此时不一定需要满足max>min),由于min默认是0,为了输入多行文本,我们习惯的都是通过在EditText_tag_creatfcn()中设置max=2
set(hObject,'max',2)
set(hObject,'string',{'Thisisthemultiplelinesdemo','—matlabfan'});%从这里可以看出,多行文本是通过cell数据实现的
当然我在GUI_filename_creatfcn()或者直接在属性面板修改也是可以的
另外我们在EditText上读取或者设置的string时,必须是字符串,但是有时我们需要处理的是数据,此时我们就需要使用str2num或者num2str进行数据转换
还有一点需要注意,EditText的callback执行的条件是:
1.EditText中的文本必须发生改变
2.确定操作
(1)鼠标:
在当前GUI窗口的EditText控件之外的任意位置单击
(2)键盘:
对于单行,直接按Enter;对于多行,按Ctr+Enter
在上面的两个条件同时满足的条件下才会激发EditText的callback
在编辑文本框中还支持如下快捷键
Ctrl+X—Cut
Ctrl+C—Copy
Ctrl+V—Paste
Ctrl+H—Deletelastcharacter
Ctrl+A—Selectall
ListBox和PopUpMenu的value和string属性当在列表框中选中某个条目的时候,value自动赋值为该条目的序号,注意第k个条目的序号是k,而string是一个cell型的字符串,其中保存了列表框中的所有条目.
注意对于Listbox,它的max和min没有什么意义,对其它属性不构成影响
比如:
在ListBox_tag_creatfcn()中输入,为列表框添加如下几个条目
set(hObject,'string',{'西工大','西交大','北大','清华'});%从这里看出每个string必须是cell型数据,其中每一个对应一个条目
在ListBox_tag_callback()中输入,可以查看到底是选中了第几个条目,它的内容是什么
string=get(hObject,'string');
num=get(hObject,'vlue')
item=string{num}
Listbox的callback触发的条件是,满足下面任意一条
1.鼠标点单击释放时(双击当两次单击处理)
2.键盘↑和↓操作
3.鼠标选中但未释放,此时使用空格或者回车键触发回调,释放鼠标时再次回调
Pop-UpMenu下拉菜单的用法和列表框的用法一样,这里不再累赘了
Slider的value和min、max属性Slider滑块控件,一般常用作进度条或者选择数据范围max对应于滑块的最大值,min是最小值,value是当前值,其中sliderstep=[x,y]表示点击滑块的前进后退箭头value每次改变x*(max-min),直接在滑块上点击每次改变y*(max-min),一般而言x三、对话框设计
在图形用户界面程序设计中,对话框是重要的信息显示和获取输入数据的用户界面对象。
1、公共对话框:
公共对话框是利用windows资源的对话框,包括文件打开、文件保存、颜色设置、字体设置、打印设置等。
1)文件打开对话框:
用于打开文件
uigetfile
uigetfile(‘FilterSpec’)
uigetfile(‘FilterSpec’,’DialogTitle’)
uigetfile(‘FilterSpec’,’DialogTitle’,x,y)
[fname,pname]=uigetfile(…)
2)文件保存对话框:
用于保存文件
uiputfile
uiputfile(‘InitFile’)
uiputfile(‘InitFile’,’DialogTitle’)
uiputfile(‘InitFile’,’DialogTitle’,x,y)
[fname,pname]=uiputfile(…)
3)颜色设置对话框:
用于图形对象颜色的交互设置
c=uisetcolor(‘h_or_c,’DialogTitle’)
4)字体设置对话框:
用于字体属性的交互式设置
uisetfont
uisetfont(h)
uisetfont(S)
uisetfont(h,’DialogTitle’)
uisetfont(S,’DialogTitle’)
S=uisetfont(…)
5)打印设置对话框:
用于打印页面的交互式设置
dlg=pagesetupdlg(fig)
pagedlg
pagedlg(fig)
6)打印预览对话框:
用于对打印页面进行预览
printpreview
printpreview(f)
7)打印对话框:
printdlg
printdlg(fig)
printdlg(‘-crossplatform’,fig)
printdlg(-‘setup’,fig)
2、MATLAB专用对话框
1)错误信息对话框:
用于提示错误信息
errordlg打开默认的错误信息对话框
errordlg(‘errorstring’)打开显示’errorstring’信息的错误信息对话框
errordlg(‘errorstring’,’dlgname’)打开显示’errorstring’信息的错误信息对话框,对话框的标题由‘dlgname’指定
erordlg(‘errorstring’,’dlgname’,’on’)打开显示’errorstring’信息的错误信息对话框,对话框的标题由‘dlgname’指定.如果对话框已存在,’on’参数将对话框显示在最前端。
h=errodlg(…)返回对话框句柄
例:
errordlg('输入错误,请重新输入','错误信息')
2)帮助对话框:
用于帮助提示信息
helpdlg打开默认的帮助对话框
helpdlg(‘helpstring’)打开显示’errorstring’信息的帮助对话框,
helpdlg(‘helpstring’,’dlgname’)打开显示’errorstring’信息的帮助对话框,对话框的标题由‘dlgname’指定
h=helpdlg(…)返回对话框句柄
例:
helpdlg('矩阵尺寸必须相等','在线帮助')
3)输入对话框:
用于输入信息
answer=inputdlg(prompt)打开输入对话框,prompt为单元数组,用于定义输入数据窗口的个数和显示提示信息,answer为用于存储输入数据的单元数组。
answer=inputdlg(prompt,title)与上者相同,title确定对话框的标题。
answer=inputdlg(prompt,title,lineNo)参数lineNo可以是标量、列矢量或m×2阶矩阵,若为标量,表示每个输入窗口的行数均为lineNo;若为列矢量,则每个输入窗口的行数由列矢量lineNo的每个元素确定;若为矩阵,每个元素对应一个输入窗口,每行的第一列为输入窗口的行数,第二列为输入窗口的宽度。
answer=inputdlg(prompt,title,lineNo,defAns)参数defans为一个单元数组,存储每个输入数据的默认值,元素个数必须与prompt所定义的输入窗口数相同,所有元素必须是字符串。
answer=inputdlg(prompt,title,lineNo,defAns,Sesize)参数resize决定输入对话框的大小能否被调整,可选值为on或off.
例:
prompt={'InputName','InputAge'};
title='InputNameandAge';
lines=[21]';
def={'JohnSmith','35'};
answer=inputdlg(prompt,title,lines,def);
4)列表选择对话框:
用于在多个选项中选择需要的值
[selection,ok]=listdlg(‘Liststring’,S,…)输出参数selection为一个矢量,存储所选择的列表项的索引号,
输入参数为可选项’Liststring’(单元数组),’SelectionMode’(’single’或’multiple’,’ListSize’([wight,height]),’Name’(对话框标题)等
5)信息提示对话框:
用于显示提示信息
msgbox(message)打开信息提示对话框,显示message信息。
msgbox(message,title)title确定对话框标题。
msgbox(message,title,’icon’)icon用于显示图标,可选图标包括:
none(无图标)/error/help/warn/custom(用户定义)
msgbox(message,title,’custom’,icondata,iconcmap)当使用用户定义图标时,icondata为定义图标的图像数据,iconcmap为图像的色彩图。
msgbox(…,’creatmode’)选择模式creatmode,选项为:
modal,non_modal,和replace。
h=msgbox(…)返回对话框句柄
6)问题提示对话框:
用于回答问题的多种选择
button=questdlg(‘qstring’)打开问题提示对话框,有三个按钮,分别为:
yes,no和cancel,’questdlg’确定提示信息。
button=questdlg(‘qstring’,’title’)title确定对话框标题。
button=questdlg(‘qstring’’title’,’default’)当按回车键时,返回default值default必须是yes,no或cancel之一。
button=questdlg(‘qstring’,’title’,’str1’,’str2’,’default’)打开问题提示对话框,有两个按钮,分别由str1和str2确定,’qstdlg’确定提示信息,default必须是str1或str2之一。
button=questdlg(‘qstring’,’title’,’str1’,’str2’,’str3’,’default’)打开问题提示对话框,有三个按钮,分别由str1,str2和str3确定,’qstdlg’确定提示信息,default必须是str1,str2或str3之一。
7)进程条:
以图形方式显示运算或处理的进程
h=waitbar(x,’title’)显示以title为标题的进程条,x为进程条的比例长度,其值必须在0到1之间,h为返回的进程条对象的句柄。
waitbar(x,’title’,’creatcancelbtn’,’button_callback’)在进程条上使用creatcancelbtn参数创建一个撤销按钮,在进程中按下撤销按钮将调用button_callback函数。
waitbar(…,property_name,property_value,…)选择其它由prompt_name定义的参数,参数值由prompt_value指定。
例:
h=waitbar(0,'plea