当前位置:文档之家› Matlab交互式程序设计教程及举例

Matlab交互式程序设计教程及举例

Matlab交互式程序设计教程及举例
Matlab交互式程序设计教程及举例

Matlab交互式程序设计教程及举例

一、创建GUI(Graphics User Interface)新文件和编辑已经存在的GUI文件

1、在matlab命令窗口中键入guide,弹出如下的对话框:

这是一个双页面对话框,分别用于创建新文件和打开已存在的GUI文件,鼠标点击相应的标题即可切换。

2、图中可见“创建新的GUI”有四种模版选项,不管其它几个,点选第一项,按“OK‘按钮可打开如图所示的GUI编辑器

其中左边是控件工具栏,用户可根据自己的程序将所需要的控件用鼠标拖至右侧的编辑区域进行布局。(用户可将鼠标悬停在各个控件图表上查看各个对象的名称)菜单栏下边是工具条,其中常用的有“”(保存当前“、”“”(编辑当前控件的相应属性)文件和相应的m文件)、文件、“”(编写相应

协调运行的mGUI(创建和修改用户自己的程序菜单)、“”(保存当前文件并运行改程序)。右下方主要区域是程序的界面布局窗口(灰色网格区域是布局区域,用户可根据程序需要用鼠标拖动该区域的右下角

调整该区域的大小)。

、此时可以按下“3”图标保存该文件(自然此时程序没有任何功能,只有一个主框架),弹出文件保存对话框,在文件名处输入一个文件名(英文字母开头),如“my1”等,扩展名自动设置为“.fig”。系统除了保存当前的界面文件外,还自动生成一个与该界面一起协调运行的“my1.m”文件,并在m文件编辑窗口中打开它。

4、浏览一下该文件,可以看到该文件中目前自动创建了3个函数:

function varargout = my1(varargin)

function my1_OpeningFcn(hObject, eventdata, handles, varargin)

function varargout = my1_OutputFcn(hObject, eventdata, handles)

这些函数声明和参数在后续的程序设计中不要做任何修改,切记!!!

对我们目前的应用来说第一个函数和第三个函数的程序体也不要做任何修改。

根据自己的程序涉及需要只需修改第二个函数的程序体部分。(具体的修改方式可以通过我的例子程序加以体会。)

注意第二个函数程序体的最后一条语句

guidata(hObject, handles);

该语句在后续的程序设计中将会频繁使用,现在请先记住它。

5、祝贺你!你现在已经有了一个名为“my1.m”和“my1.fig”的可以运行的文件了!

现在可以在matlab命令窗口中键入“my1”运行改程序,自然,除了显示一个标题为“my1”的空白窗口外,你还不能进行任何交互式控制操作(自然除了关闭该窗口外),因为你还没有写任何控制程序和添加任何控件。

二、增加控件及编写相应的执行程序

1、现在可以编辑运行窗口的标题栏——即将“my1”修改为自己希望的标题,本例中我改为“参数a,b,n 对r=acos(nt+b)的影响”。

设计窗口中点击“”工具条图标,弹出如下的“属性编辑框”在GUI该窗口对于后续设计中的每个控

件都可以打开(通过点击“”工具条图标),它共有2列,左列是当前对象的用户可以修改的属性名(按首

字母顺序排列),右列是每个属性的可以编辑的属性值,现在在左列找到“name”的影响”。关闭此窗口,点击“r=acos(nt+b)”以my1一项,将右侧的自动生成的“”改为“参数a,b,n对的影响”。a,b,n

对r=acos(nt+b)OK保存当前修改并运行程序。!窗口的标题栏已经变成了“参数、现在开始程序的布局及控制设计,先从最简单的一个控制按钮开始。2”控件至右侧设计区域中的自己希望的位置,放开鼠标,然后可以点选Button设计窗口左侧的“拖动GUIPush

并拖动该控件的右下角改变该控件的大小,则界面中的第一个控件就绪。”以保存当前修改并运行程序。发生了什么事情?运行窗口的响应位置处有了这个交互式控目前可以点击“制按钮!点击这个按钮,除了按钮自动界面上有个形象的动态响应外,不会有任何响应,因为目前我们还没有编写任何控制程序。.

3、现在我们开始编写该控制程序。

点击“”工具栏图标,打开m文件编辑器,浏览相应的文件,会发现文件末尾多了一个函数头:

function pushbutton1_Callback(hObject, eventdata, handles)

这是系统自动生成的相应按钮控件的回调函数,系统自动将其命名为pushbutton1,其中pushbutton代表该控件的类别是“Push Button”,后面的阿拉伯数字代表这是用户在界面设计中所创建的第几个(该控件名称用户可以进行修改,具体修改方法见下一条说明)。现在用户可以在该函数头下边填写相应的自己所希望的控制程序。

目前我们只希望用户点击按钮时进行一个简单的操作:结束当前程序并关闭该窗口。

这只需如下的一条语句即可:(将之写在该函数头的下面)

close;

设计窗口,再次点击“”运行程序,然后在运行后的窗口中点击该按钮。哈文件,回到GUI保存修改后的mSo Easy!!!

哈!如我所愿,程序安全退出了! pushbutton1”名称改为自己容易记住的个性化名字。、下面我们可以调整该按钮的界面显示和将自动生成的“4”工具条图标,弹出相应的“属性编辑框”已调整它设计窗

口中点击此按钮,然后点击工具条上的“在GUI 的名称和运行时的界面属性(任选)。本例中我的调整如下:mjieshu”;(此时如果保存修改,然后进入相应的tag”属性,将其后的“pushbutton1”改为“(1)找到“”变(将函数头中的“pushbutton1文件编辑窗口,可以惊喜地看到其中的最后一个函数也进行了相应的修改: jieshu”)成了“function jieshu_Callback(hObject, eventdata, handles)

% hObject handle to jieshu (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

close;

将后面的内容,束”;找到“FontSize”(2)在属性编辑框中找到“String”一栏,将后面的内容改为“结

点击左右两栏间的图标,弹出颜色选择窗口,点选自己喜欢的颜色;,”;找到“ForegroundColor”改为“20”,点击后面的图标,在下拉菜单FontWeight_GB2312”,找到“找到“FontName”,将后续的内容改为“楷体”一项。现在再运行程序,观察运行界面的变化,体会各个属性值和属性名的调整对按钮外观的Bold中选择“影响。档”,设计窗口中再建立一个按钮,(界面的详细设计略),本例中我讲显示字符改为了“文 5、现在在GUI.

help”它的“Tag”改为了“ m文件编辑器,发现最后又增加了一个函数:进入function

help_Callback(hObject, eventdata, handles)

在该函数头下编写下列一条程序:winopen('code.pdf');

打开引号内所指定的一个当前路径下的文件,本例中我随便选windows其功能是将程序控制权交给windows,由文档,在程序执行时点击该按钮即可打开该文档。了一个PDF大家最后上交的综合作业中的文档及使用说明帮助文件我希望大家以这样连接的方式可以让我顺利简单地打开。 6、继续界面的设计工作。设计见

面中左侧为了在程序的运行界面中显示图形,需要建立图形窗口,建立的过程很简单,同样是拖动GUI”控件至右侧的界面布局窗口的自己希望的位置,然后用鼠标拖动方式调整其大小即可。本例中我建的“Axis”(用户也可同样通过属性编辑窗口修改Axes2Axes1”和“”名系统自动生成为“立了两个图形窗口,其“Tag”属性改为为自己个性化的名称,本例中我没有做相应的修改)。此外,我又建立了第三个控制按钮,其“Tag String”属性改为了“跳起来”,并进行了如下的布局。“”了“jump, 文件中看到此时又多了一个新的函数文件头m可以在.

function jump_Callback(hObject, eventdata, handles)

该按钮的控制函数较为复杂,后续中我再详细说明,现在先不写任何程序。

7、在布局界面上再增加两个“slider”控件(滚动条),系统自动将其“Tag”命名为“slider1”和“slider2”,我在本例中依次用它们在程序运行时控制显示图像的函数中的“a”、“b”两个参数的调整,此时浏览一下m文件,可以看到自动为每个“Slider”增加了两个函数,分别如下:

function slider1_Callback(hObject, eventdata, handles)

% hObject handle to slider1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'Value') returns position of slider

% get(hObject,'Min') and get(hObject,'Max') to determine range of slider

% --- Executes during object creation, after setting all properties.

function slider1_CreateFcn(hObject, eventdata, handles)

% hObject handle to slider1 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles empty - handles not created until after all CreateFcns called

% Hint: slider controls usually have a light gray background, change

% 'usewhitebg' to 0 to use default. See ISPC and COMPUTER.

usewhitebg = 1;

if usewhitebg

set(hObject,'BackgroundColor',[.9 .9 .9]);

else

set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));

end

% --- Executes on slider movement.

function slider2_Callback(hObject, eventdata, handles)

% hObject handle to slider2 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles structure with handles and user data (see GUIDATA)

% Hints: get(hObject,'Value') returns position of slider

% get(hObject,'Min') and get(hObject,'Max') to determine range of slider

% --- Executes during object creation, after setting all properties.

function slider2_CreateFcn(hObject, eventdata, handles)

% hObject handle to slider2 (see GCBO)

% eventdata reserved - to be defined in a future version of MATLAB

% handles empty - handles not created until after all CreateFcns called

% Hint: slider controls usually have a light gray background, change

% 'usewhitebg' to 0 to use default. See ISPC and COMPUTER.

usewhitebg = 1;

if usewhitebg

set(hObject,'BackgroundColor',[.9 .9 .9]);

else

set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));

end

其中的两个_CreateFcn我们后续不需任何操作,所以也不需要任何修改,现在先记住我们需要对于两个函数进行程序的填写操作,以响应当程序执行时当用户拖动滚动条时应该引起何种响应,具体的响_Callback 应程序也在后续填写,现在先在GUI界面中修改其属性值。

选中“Slider1”,打开相应的属性编辑器,找到其中的“Max”一栏,将后面的内容改为“8”(本例我的“a”值最大值为8),找到其中的“Min”一栏,将后面的内容改为“1”(本例我的“a”值最小值为1),找到“Value”一栏,点击后面的图标,在弹出的对话框中将“0.0”改为“5”,以指定在程序进行运行时将该滚动条的值设置为5。此时可以运行程序,观察第一个滚动条中的滑块位置应该在中间偏右的位置,这说明上述设定已经成功。

“Slider2”我在这里先不做调整,系统自动默认最小值为0,最大值为1,当前值为0,逻辑上本例的“b”值应该在0与2π之间,作为示例,我在后续的程序书写中将获得的该滚动条上的当前值乘以2π来进行相应的调整。

作为示例,我对于本程序中参数n用一个“Edit Text”进行程序运行中的输入控制,所以在界面上再产生一个“Edit Text”,系统自动将其“Tag”设置为“edit1”,我对此不作修改,只是将其“FontSize”属性调整为“16”,将‘String'属性改为“1”。此时检查m文件,可以观察到系统又自动创建了2个函数:function edit1_Callback(hObject, eventdata, handles)

function edit1_CreateFcn(hObject, eventdata, handles)

同样其中的edit1_CreateFcn我们也不要进行任何改动,目前先记住日后在edit1_Callback中编写程序以响应用户在程序运行时响应的输入即可。

到此,本示例程序的控制对象和2个绘图区域已经完全建立完毕,目前我安排的界面如图所示。

8、下面再进行一些程序界面的辅助工作,用“Static Text”控件对界面增加一些说明,以增加界面的友好性。

在第一个图形窗口上方的空隙中放置一个“Static Text”,将“String”改为“参数a,b,n对r=acos(nt+b)的影响”,按自己的意愿设置好位置,颜色,字体大小,字体名称等属性值,具体设置详细大家可以通过属性编辑器窗口查看。

在两个滚动条和编辑框的左侧依次放置3个“Static Text”,分别用于说明后续的3个控件分别用于控制哪个参数,为此,将它们的“String”属性分别设置为“a”、“b”、“n”,大小和颜色等外观形象进行适当的调整。

在第一个滚动条下的左右两端各放置一个“Static Text”,分别用于说明该滚动条的最大值和最小值,为此将它们的“String”属性分别设置为“1”、“8”;在第二个滚动条下的左右两端各放置一个“Static Text”,分别用于说明该滚动条的最大值和最小值,为此将它们的“String”属性分别设置为“0”、“2π”。

最后,在两个滚动条下方中部分别放置一个“Static Text”对象,分别用于实时显示对应的滚动条在程序运行时被用户拉动时当前的具体数值,所以其“String”属性值将来在程序中即时获取,因此在目前设计阶段不进行调整,但为了避免混淆,将二者的“Tag”属性分别修改为“texta”和“textb”以便于进行程序控制,具体实现方式参见后续程序的编写。这样设计完成时得到的界面如下图。

三、完整程序的编写。

目前本例所希望的界面布局已经全部完成(除菜单外,此功能后续介绍),现在开始程序的编写工作,写具体的程序前,必须来了解matlab的各function(函数)间的数据传输机制。我们先来考察一下已经完成的m文件,在目前系统自动生成的所有function中,除第一个(相当于C语言中的main函数)外,其它

的所有函数的输入参数中都有一个名为handles的变量,这是matlab为GUI程序开发者提供的一个数据结构,用于各个函数之间的数据传输,handles是结构名,程序中的每个各function间的数据都必须以handles.***的形式存在,才能实现各协调工作的各函数之间的数据传输,目前当我们完成设计后,我们已经有了一批形如handles.***的变量,如在添加了第一个显示为“结束”的按钮并将其“Tag”属性值设置为“jieshu”后系统已经自动地为程序开发者创建了名为handles.jieshu的变量,如果我们在程序中希望访问这个按钮对象,我们就可通过这个handles.jieshu变量找到它,具体的访问程序编写后续写程序时不难学会。接着我们创建“Tag”属性分别为“help”和“jump”第二个、第三个按钮时,系统马上为我们也创建了相应的两个变量handles.help和handles.jump。接着我们建立两个图形窗口时,系统也依次建立了handles.axe1和handles.axes2两个变量用于程序中访问这两个图形窗口,在设置好两个滚动条后,系统也立即建立了handles.slider1和handles.slider2两个变量,然后再建立滚动条下面的编辑框时也建立了handles.edit1变量。现在相信你明白而产生可以访问该控件的一个变量,handles.”属性值的作用了吧?该属性值是什么,系统就在其前加上Tag“

所以界面设计阶段如果自己想修改“Tag”属性值,必须保证和其它的不能相同,且符合matlab变量的命名规则——必须英文字母开头,由字母数字和下划线组成。接着我们在界面上布置的每个“Static Text”(静态文本)都依次产生一个前缀为handels.的与相应的“Tag”属性一样的变量,本例程序中我们所设置的那些静态文本变量除最后2个外(即分别位于两个滚动条下方中间的文本框)都不需要进行控制,所以不用理睬它们,只需记住最后两个变量名分别是handles.texta和handles.textb,(它们的“Tag”属性在设计阶段我们分别已经改为了texta 和textb。

除了上述的在界面设计阶段所自动建立的前缀为handles.的变量外,如果在每个函数中还需要创建新的变量,并希望这些变量值能为其它function共享,那么在定义新变量时一定也要建立形如handles.***的变量,如本例程序中我们要用到的handles.a,handles.b, handles.hh,handles.linewidth等。

明白了数据变量命名机制后,我们现在开始完善我们本例的程序编写。

1、填写系统已经生成的my1_OpeningFcn函数

在m文件中找到函数:

function my1_OpeningFcn(hObject, eventdata, handles, varargin)

该函数名称“_”前的名字与创建GUI时保存的文件名相同,“_”后的“OpeningFcn”由系统自动生成,是固定不变的,开发者也不可进行修改,该函数用于执行用户所希望的程序运行时的matlab语句。本例中我希望获取在设计阶段中两个滚动条中设置好的当前值作为函数r=acos(nt+b)中的a,b,n的值在左边大图像窗口中绘制该函数的图像,并作为花絮在第二个图像窗口中显示名为“dance_29.gif”的图像文件(该文件存放在当前目录下)。

目前的该函数文件系统已经自动生成了两条语句

% Choose default command line output for my1

handles.output = hObject;

% Update handles structure

guidata(hObject, handles);

不要修改它们,在两行语句之间插入自己的语句。本例中我所键入的语句和简单功能说明如下:handles.linewidth=2; %定义画图的线宽

handles.color='b'; %定义画图的颜色

handles.a=get(handles.slider1,'value');

%获取第一个滚动条当前值,并将其赋给变量handles.a

%注意此句的语法,get(界面中的控件名称,'所希望获取的属性名'

%还记得吗?我们在设计阶段该控件的'value'已经设置为5

%所以此句执行后handles.a=5

handles.b=2*pi*get(handles.slider2,'value');

MATLAB程序设计教程(第二版)课后答案(可编辑修改word版)

MATLAB 第二版课后答案unit3-8 unit3 实验指导 1、 n=input('请输入一个三位数:'); a=fix(n/100); b=fix((n-a*100)/10); c=n-a*100-b*10; d=c*100+b*10+a 2(1) n=input('请输入成绩'); switch n case num2cell(90:100) p='A'; case num2cell(80:89) p='B'; case num2cell(70:79) p='C'; case num2cell(60:69) p='D'; otherwise p='E'; end price=p (2)n=input('请输入成绩'); if n>=90&n<=100 p='A'; elseif n>=80&n<=89 p='B'; elseif n>=70&n<=79 p='C'; elseif n>=60&n<=69 p='D'; else p='E'; end price=p (3)try n; catch price='erroe' end 3 n=[1,5,56,4,3,476,45,6,3,76,45,6,4,3,6,4,23,76,908,6];

b=n(1); for m=2:20 if n(m)>a a=n(m); elseif n(m)=0 disp(A([n],:)); elseif n<0 disp(lasterr); else disp(A([6],:)); disp(lasterr); end 7(1) f=[];

MATLAB程序设计教程课后答案

实验指导 1、 n=input('请输入一个三位数:'); a=fix(n/100); b=fix((n-a*100)/10); c=n-a*100-b*10; d=c*100+b*10+a 2(1) n=input('请输入成绩'); switch n case num2cell(90:100) p='A'; case num2cell(80:89) p='B'; case num2cell(70:79) p='C'; case num2cell(60:69) p='D'; otherwise p='E'; end price=p (2)n=input('请输入成绩'); if n>=90&n<=100 p='A'; elseif n>=80&n<=89 p='B'; elseif n>=70&n<=79 p='C'; elseif n>=60&n<=69 p='D'; else p='E'; end price=p (3)try n; catch price='erroe' end 3 n=[1,5,56,4,3,476,45,6,3,76,45,6,4,3,6,4,23,76,908,6]; a=n(1);

for m=2:20 if n(m)>a a=n(m); elseif n(m)=0 disp(A([n],:)); elseif n<0 disp(lasterr); else disp(A([6],:)); disp(lasterr); end 7(1) f=[]; for n=1:40

MATLAB程序设计教程(第二版)第三章实验报告下载

大学社区网收集整理https://www.doczj.com/doc/2813752704.html, 评分 日期湖南商学院北津学院实验报告 课程名称MATLAB科学计算编程语言 实验名称MATLAB程序设计 专业班级信科1121班 姓名xxx 学号xxx 实验日期2012年11月5日 2012—2013学年度第一学期 一、实验目的 1.掌握利用if语句、switch语句实现选择结构的方法。 2.掌握利用for语句、while语句实现循环结构的方法。 3.熟悉利用向量运算来代替循环操作的方法并理解MATLAB程序设计的特点 4.掌握定义和调用MATLAB函数的方法。

二、实验环境 系统windows7旗舰版 处理器Intel(R)Core(TM)i7-3610M CPU @ 2.30GHz 安装内存 4.00GB (3.07GB 可用)系统类型64位操作系统运行环境 MATLAB 5.3 三、实验基本原理 利用上课所学知识解决以下问题: 1.从键盘输入一个3位数的整数,将它反向输出。如输入639,输出936。 2.输入一个百分制成绩,要求输出成绩等级A、B、C、D、E。其中90~100分为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。 要求: (1)分别用if 语句和switch 语句实现。 (2)输入百分制成绩后要判断该成绩的合理性,对不合理的成绩应输出出错信息。3.输入20个数,求其中最大数和最小数。要求分别用循环结构和调用MATLAB 的max 函数、min 函数来实现。 4.23.0ln )3.0sin(23.03.0a a e e y a a +++?=?,当a 取-3.0、-2.9、-2.8、…、2.8、2.9、 3.0时,求各点的函数值。要求分别用顺序结构和循环结构实现。 5.当n 分别取100、1000、10000时,求下列各式的值: (1)) 6...(n 1...31211122222π=+++++(2)) 2...()12)(12()2)(2(...756653443122π =??? ?????+?????????××????????××????????××n n n n 要求分别用循环结构和向量运算(使用sum 函数)来实现。 6.建立5×6矩阵,要求输出矩阵第n 行元素。当n 值超过矩阵的行数时,自动转为输出矩阵最后一行元素,并给出出错信息。 7已知,o999 ) 20()30()40(f f f y += (1)当)5ln(10)(2 ++=n n n f 时,y 的值是多小。 (2)当+×+×+×=433221)(n f …+)1(+×n n 时,y 的值是多小。 8.先用函数的递归调用定义一个函数文件求 ∑=n i m i 1,然后调用该函数文件求

Matlab程序设计教程(第二版)刘卫国课后参考答案解析

第二章 1 求下列表达式的值。 (1) w=sqrt(2)*(1+0.34245*10^(-6)) (2) a=3.5; b=5; c=-9.8; x=(2*pi*a+(b+c)/(pi+a*b*c)-exp(2))/tan(b+c)+a (3) a=3.32; b=-7.9; y=2*pi*a^(2)*[(1-pi/4)*b-(0.8333-pi/4)*a] (4) t=[2,1-3*i;5,-0.65]; z=1/2*exp(2*t)*log(t+sqrt(1+t^(2))) 2 求下列表达式 A=[-1,5,-4;0,7,8;3,61,7]; B=[8,3,-1;2,5,3;-3,2,0]; (1) A+6*B A^2-B+eye (2) A*B A.*B B.*A (3) A/B B\A (4) [A,B] [A([1,3],:);B^2] 3 根据已知,完成下列操作 (1) A=[23,10,-0.778,0;41,-45,65,5;32,5,0,32;6,-9.54,54,3.14]; K=find(A>10&A<25); A(K) (2) A=[23,10,-0.778,0;41,-45,65,5;32,5,0,32;6,-9.54,54,3.14]; B=A(1:3,:) C=A(:,1:2) D=A(2:4,3:4) E=B*C (3) E

f=input('输入一个数:','s'); f(end :-1:1) 2 用if语句 score=input('请输入成绩:'); if score>=90&&score<=100 disp('A'); elseif score>=80&&score<=89 disp('B'); elseif score>=70&&score<=79 disp('C'); elseif score>=60&&score<=69; disp('D'); elseif score<60&&score>=0; disp('E'); else disp('出错'); end 用switch语句 score=input('请输入成绩:'); switch fix(score/10) case {9,10} disp('A'); case {8} disp('B'); case {7} disp('C'); case {6} disp('D'); case {0,1,2,3,4,5} disp('E'); otherwise disp('出错'); end 第四章1题 1) X=0:10; Y=x-x.^3/6; P lot(x,y)

matlab程序设计与应用(第二版)第三章部分课后答案

第三章1. (1)A=eye(3) (2)A=100+100*rand(5,6) (3)A=1+sqrt(0.2)*randn(10,50) (4)B=ones(size(A)) (5)A+30*eye(size(A)) (6)B=diag(diag(A)) 2. B=rot90(A) C=rot90(A,-1) 3. B=inv(A) ;A的逆矩阵 C=det(A) ;A的行列式的值 D=A*B E=B*A D=E 因此A与A-1是互逆的。 4. A=[4 2 -1;3 -1 2;12 3 0]; b=[2;10;8]; x=inv(A)*b x = -6.0000 26.6667 27.3333 5. (1) diag(A) ;主对角线元素 ans = 1 1 5 9 triu(A) ;上三角阵

ans = 1 -1 2 3 0 1 -4 2 0 0 5 2 0 0 0 9 tril(A) ;下三角阵 ans = 1 0 0 0 5 1 0 0 3 0 5 0 11 15 0 9 rank(A) ;秩 ans = 4 norm(A) ;范数 ans = 21.3005 cond(A) ;条件数 ans = 11.1739 trace(A) ;迹 ans = 16 (2)略 6. A=[1 1 0.5;1 1 0.25;0.5 0.25 2] A = 1.0000 1.0000 0.5000 1.0000 1.0000 0.2500 0.5000 0.2500 2.0000

[V,D]=eig(A) V = 0.7212 0.4443 0.5315 -0.6863 0.5621 0.4615 -0.0937 -0.6976 0.7103 D = -0.0166 0 0 0 1.4801 0 0 0 2.5365

MATLAB程序设计教程课后答案.doc

MATLAB第二版课后答案unit3-8 unit3 实验指导 1、 n=input('请输入一个三位数:'); a=fix(n/100); b=fix((n-a*100)/10); c=n-a*100-b*10; d=c*100+b*10+a 2( 1) n=input(' 请输入成绩 '); switch n case num2cell(90:100) p='A'; case num2cell(80:89) p='B'; case num2cell(70:79) p='C'; case num2cell(60:69) p='D'; otherwise p='E'; end price=p (2) n=input(' 请输入成绩 '); if n>=90&n<=100 p='A'; elseif n>=80&n<=89 p='B'; elseif n>=70&n<=79 p='C'; elseif n>=60&n<=69 p='D'; else p='E'; end price=p (3) try n; catch price='erroe' end 3 n=[1,5,56,4,3,476,45,6,3,76,45,6,4,3,6,4,23,76,908,6];

a=n(1) ; b=n(1); for m=2:20 if n(m)>a a=n(m); elseif n(m)=0 disp(A([n],:)); elseif n<0 disp(lasterr); else disp(A([6],:)); disp(lasterr); end 7( 1) f=[];

MATLAB程序设计基础

第三章MATLAB程序设计基础 chapter 3: Foundation of MATLAB program design 一、数据及数据文件(Data and Data file) 1. 数据类型:(Data mode)为适应各种不同计算和处理的需求,MATLAB提供了多种数据类型,主要有: 数值数组(Numeric array)— 包括整形(int8,uint8,int16,uint16,int32,uint32)单精度 (signal), 双精度(duble)(MATLAB最常用的变量类型), 稀疏(sparce)数组。按维数分有一维、二维和多维数 组。 Int---Integrate. Uint---Unsigned Integer data 字符数组(Character array):由字符串组成的数组 单元数组(Cell array):用不同类型和大小的数组组成的数组,同 一个元胞数组中各元胞的内容可以不同。 结构数组(Structure array):与单元数组类似,但其数据的组织能 力更强,更富于变化。 Java类(Java class):由JavaAPI或第三方定义的类函数。 函数句柄(Function handle):可以在一个参数列表中传递,并使 用feval运行. 在工作空间浏览器中不同的数据类型有着不同的图标标识。2. 数据文件(Data file) MATLAB支持的各种数据文件(Readable file formats of MATLAB)的主要类型及其存取方法如下述: (1)二进制数据文件:(Binary date file)以.mat为扩展名。是标准的MATLAB数据文件,以二进制编码形式存储。.mat文件可以由MATLAB提供的save和load命令直接存取。 (2)ASCⅡ码数据文件:(ASCⅡcode data file)扩展名为.txt, .dat

MATLAB程序设计基础介绍

第一讲MATLAB编程基础 随机计算技术的发展,各种各样的应用软件越来越多,比如能够支持数学计算的软件就有多种:MATLAB、Mathmatica、Scilab等。MATLAB以其强大的矩阵计算能力使它在科学计算与工程设计中更具备竞争力,MATLAB集成了众多基本的数据处理功能,可以完美支持数值与非数值运算,本小节学习基于MATLAB的基本编程语法。 1、M文件 由MATLAB语句构成的程序通常作为文件保存在后缀为.m的文件中,称为M文件,可以使用任何一种文本编辑器来编写M文件。M文件的文件名不能用汉字,也不能用数字开头,只能用英文字符开头,后缀数字等,长度可达255个字符。M文件一般有两种类型:script文件(称为正本文件)与function文件(称为函数文件)。 1.1正本文件 正本文件是由用户编写的一个包含一系列MATLAB正本的文本文件,在MATLAB工作空间的命令行提示符“>>”后敲入这个M文件的文件名就可以依次执行这个M文件中的每条语句。当需要从命令行中执行多条命令时可以使用script文件,为此你只需要将希望执行的命令逐行写入script文件中,并保存在MATLAB工作目录下。概括起来正本文件有如下特点:(1)不需要任何实参代入,也不能返回任何输出参数;(2)其中的变量作用于整个工作空间; (3)使用工作空间中的数据;(4)不需要用到任何MATLAB关键字,直接在其中写可以执行的MATLAB语句;(5)可以利用百分号作注释。(6)不能包含任何自定义函数。

例题1本例说明一个script文件。如下语句计算一些三角函数在不同弧度时的函数值,并绘制花瓣的图象。由于语句较多,不方便在命令行中一条一条地执行,现在将这些语句利用文本编辑器逐行写入一个M文件petals.m 中,则形成了一个典型的script文件,并把它保存在MATLAB工作目录下。%文件名:petals.m 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;%第四个花瓣 for k=1:4 polar(theta,rho(k,:))%Graphics output pause end 在命令行提示符后敲入文件名petals,则可以执行其中的每一条语句,结果产生四幅花瓣图象,见图1。如果你在命令行中敲入whos并回车,则可以看到这个文件中的所有变量,这说明script文件中的变量作用域为整个MATLAB工作空间。

《MATLAB程序设计》复习题

《MATLAB程序设计》复习题 一填空题 1 已知A=[ 2 5 6;1 7 8];B=[1 4 3;4 7 0];写出下列各指令运行的结果。 A & B 的运行结果为[1 1 1;1 1 0] 。 A== B的运行结果为[0 0 0 ;0 1 0] 。 2 产生3阶单位阵的命令为eye(3) ;产生4阶全1方阵的命令为ones(4)。 3 A=rand(5,8);b=size(A);c=length(A);则b和c的值分别为[5,8]和8。 4 求矩阵的特征值的指令为eig 。 5符号;可以使命令行不显示运算结果,% 用来表示该行为注释行。6在线形图型格式的设置中,字符r表示什么颜色(红色) 7fix函数四舍五入对数组[3.17,5.34,8.90,2.52]取整,结果为[3 5 8 2] 。 8 P, Q分别是个多项式的系数矢量,求P对应的多项式的根,使用的命令是roots(P) 9使2个plot的图形在同一个坐标显示,使用hold on 命令进行图形保持,使用grid on 命令为图形添加网格。 10 数据拟合采用___polyfit___函数;求不定积分采用___ int ___函数。 11 A=rand(2,5);b=size(A);c=length(A);则b和c的值分别为_2 5和5__ 12已知A是矩阵,求A的对角矩阵函数是___diag(A)____,求A的下三角矩阵函数是__tril(A)____。 13条形图由函数__bar___来实现。 14已知s=‘显示“hey”’,则s的元素个数是9 二解答题 1、A=[71,3,-8; 2,-9,8; 0,4,5] B=A’

MATLAB程序设计与应用

实验一 MATLAB 运算基础 第二题:已知 A=??????????7653877344-3412 B=??? ? ??????72-33021-31 求下列问题: 1) A+6*B 和A-B+I 2) A*B 和A.*B 3) A^3 A.^3 4) A/B B\A 5) [A,B] [A(1,3),:B.^2] 解: >> A=[12 34 -4;34 7 87;3 65 7]; B=[1 3 -1;2 0 3;3 -2 7]; I=[1 0 0;0 1 0;0 0 1]; (1) >> A+6*B ans = 18 52 -10 46 7 105 21 53 49 >> A-B+I ans = 12 31 -3 32 8 84 0 67 1 (2) >> A*B ans = 68 44 62 309 -72 596 154 -5 241 >> A.*B

ans = 12 102 4 68 0 261 9 -130 49 (3) >> A^3 ans = 37226 233824 48604 247370 149188 600766 78688 454142 118820 >> A.^3 ans = 1728 39304 -64 39304 343 658503 27 274625 343 (4) >> A/B ans = 16.4000 -13.6000 7.6000 35.8000 -76.2000 50.2000 67.0000 -134.0000 68.0000 >> B\A ans = 109.4000 -131.2000 322.8000 -53.0000 85.0000 -171.0000 -61.6000 89.8000 -186.2000 (5) >> [A,B] ans =

第三章 MATLAB 的程序设计基础

第三章 MATLAB程序设计基础 chapter 3: Foundation of MATLAB program design 1、数据及数据文件(Data and Data file) 1. 数据类型:(Data mode)用于编程和计算的数据类型 数组: 字符数组(Character array)、 (Numeric array)— 包括整形(int8,uint8,int16,uint16,int32,uint32)单精度 (signal), 双精度(duble)(MATLAB最常用的变量类 型),稀疏(sparce)数组。、 Int---Integrate. Uint---Unsigned Integer data 单元数组(Cell array)、 结构数组(Structure array) Java类(Java class) 函数句柄(Function handle) 在工作空间浏览器中不同的数据类型有着不同的图标标识, 2. 数据文件(Data file) MATLAB支持的各种数据文件(Readable file formats of MATLAB)及其调用方法和返回值见(表 3—2) (1)二进制数据文件:(Binary date file)以.mat为扩展名。是标准的 MATLAB数据文件,以二进制编码形式存储。.mat文件可以由 MATLAB提供的save和load命令直接存取。 (2)ASCⅡ码数据文件:(ASCⅡcode data file)扩展名为.txt, .dat 等,可以是在MATLAB环境下存储的,也可能是其他软件的计算结

果,可以被MATLAB调用,也可以用文本编辑器打开进行观察与修改。可以用save和load命令进行读入和存取。 (3).图象文件:(Graphics file)扩展名为.bmp, .jpg .tif等,用于图形图象处理,可以用imread和imwrite命令进行读入和存取。 (4).声音文件:(Sound file) 扩展名为.wav ,用waveread和wavwrite命令进行读入和存取。 Readable file formats. Data formats Command Returns MAT- MATLAB workspace load Variables in file. CSV- Comma separated numbers csvread Double array. DAT- Formatted text importdata Double array. DLM- Delimited text dlmread Double array. TAB- Tab separated text dlmread Double array. Spreadsheet formats XLS - Excel worksheet xlsread Double array and cell array. WK1- Lotus 123 worksheet wk1read Double array and cell array. Scientific data formats CDF - Common Data Format cdfread Cell array of CDF records FITS- Flexible Image Transport System fitsread Primary or extension table data HDF - Hierarchical Data Format hdfread HDF or HDF-EOS data set Movie formats AVI - Movie aviread MATLAB movie. Image formats TIFF - TIFF image imread Truecolor, grayscale or indexed image(s). PNG - PNG image imread Truecolor, grayscale or indexed image. HDF - HDF image imread Truecolor or indexed image(s). BMP - BMP image imread Truecolor or indexed image. JPEG - JPEG image imread Truecolor or grayscale image. GIF - GIF image imread Indexed image. PCX - PCX image imread Indexed image. XWD - XWD image imread Indexed image. CUR - Cursor image imread Indexed image. ICO - Icon image imread Indexed image. RAS - Sun raster image imread Truecolor or indexed. PBM - PBM image imread Grayscale image. PGM - PGM image imread Grayscale image. PPM - PPM image imread Truecolor image. Audio formats

MATLAB程序设计教程(第二版)课后答案

MA TLAB第二版课后答案unit3-8 unit3 实验指导 1、 n=input('请输入一个三位数:'); a=fix(n/100); b=fix((n-a*100)/10); c=n-a*100-b*10; d=c*100+b*10+a 2(1) n=input('请输入成绩'); switch n case num2cell(90:100) p='A'; case num2cell(80:89) p='B'; case num2cell(70:79) p='C'; case num2cell(60:69) p='D'; otherwise p='E'; end price=p (2)n=input('请输入成绩'); if n>=90&n<=100 p='A'; elseif n>=80&n<=89 p='B'; elseif n>=70&n<=79 p='C'; elseif n>=60&n<=69 p='D'; else p='E'; end price=p (3)try n; catch price='erroe' end 3 n=[1,5,56,4,3,476,45,6,3,76,45,6,4,3,6,4,23,76,908,6];

b=n(1); for m=2:20 if n(m)>a a=n(m); elseif n(m)=0 disp(A([n],:)); elseif n<0 disp(lasterr); else disp(A([6],:)); disp(lasterr); end 7(1) f=[];

文本预览
相关文档 最新文档