版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
MATLABAppDesignerGUI设计及实战(微课视频版)目录第1章MATLABAppDesigner设计预备知识 第2章MATLAB常用文件操作 第3章二维绘图 第4章句柄图形系统 第5章MATLABAppDesigner设计基础及常用组件 第6章仪器、容器、图窗工具和航天航空组件 第7章预定义对话框 第8章基于MATLABAppDesigner的学生成绩管理 第9章MATLABAppDesigner在中学教学中的应用举例 第10章基于MATLABAppDesigner的数字信号处理系统 第11章基于MATLABAppDesigner的图像处理系统 第12章基于MATLABAppDesigner的通信原理系统 第1章MATLABAppDesigner设计预备知识本章要点
MATLAB意为矩阵工程(矩阵实验室),软件主要面向科学计算、可视化及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,并在很大程度上摆脱了传统非交互式程序设计语言的编程模式。本章要点:⑴MATLAB软件介绍。⑵MATLAB工作环境。⑶MATLAB中的函数类型。⑷MATLAB程序设计结构。学习目标:⑴了解MATLAB软件的组成及特点。⑵熟悉MATLAB工作环境。⑶掌握MATLAB中的几种函数类型的使用方法及特点。⑷掌握if、switch语句实现选择结构的方法。⑸掌握for、while语句实现循环结构的方法。1.1MATLAB软件介绍MATLAB主要由核心部分和各种应用工具箱两大部分组成。MATLAB核心部分由MATLAB开发环境、MATLAB语言、MATLAB数学函数库、MATLAB图形处理系统和MATLAB应用程序接口五大部分组成。①
MATLAB开发环境是一个集成的工作环境,包括MATLAB命令行窗口、文件编辑调试器、工作区、数组编辑器和在线帮助文档等;②MATLAB编程语言是一种面向科学与工程计算的高级语言,允许按照数学习惯的方式编写程序;③MATLAB的数学函数库包含了大量的计算算法,包括基本函数、矩阵运算和复杂算法等;④MATLAB的图形处理系统能够将二维和三维数组的数据用图形表示出来,并可以实现图像处理、动画显示和表达式作图等功能;⑤MATLAB应用程序接口使MATLAB语言能与C或FORTRAN等其他编程语言进行交互。1.1MATLAB软件介绍MATLAB工具箱包括功能性工具箱和科学性工具箱两类。①功能性工具箱主要用来扩充其符号计算功能、图示建模仿真功能、文字处理功能以及与硬件实时交互功能,适用于多种学科;②科学性工具箱专业性较强,如controltoolbox、communicationtoolbox等,这些工具箱都是由该领域内学术水平很高的专家编写的,所以用户不用编写自己学科范围内的基础程序即可直接进行高、精、尖的研究。1.2MATLAB工作环境MATLAB既是一种语言,又是一种编程环境。在这种环境中,系统提供了许多编写、调试和执行MATLAB程序的便利工具。下面主要介绍MATLAB中的命令行窗口、图形窗口、工作空间窗口、M文件编辑窗口和帮助系统窗口。1.2MATLAB工作环境1.2.1命令行窗口通过命令行窗口键入MATLAB的各种命令并读出相应的结果。但要注意,每一条命令或命令行键入后都要按回车键,命令才会被执行,例如,键入如下程序:a=ones(4,4)然后按回车键,即可创建一个4*4且元素值为1的矩阵,并显示如下运行结果:a=11111111111111111.2MATLAB工作环境1.2.1命令行窗口在MATLAB中,命令行窗口常用的命令及功能如表1-1所示。命令功能clc擦去一页命令行窗口,光标回到屏幕左上角clear清除工作空间中所有的变量clearall从工作空间清除所有变量和函数clear变量名清除指定的变量clf清除图形窗口内容delete<文件名>从磁盘删除指定的文件help<命令行>查询所示命令的帮助信息which<文件名>查找指定文件路径who显示当前工作空间中的变量whos列出当前工作空间的变量及信息表1-1命令行窗口常见命令与功能1.2MATLAB工作环境1.2.1命令行窗口命令功能what列出当前目录下的.m文件和.mat文件loadname加载name文件中的所有变量到工作空间loadnamex,y加载name文件中的变量x,y到工作空间savename保存工作空间变量到文件name.mat中savenamex,y保存工作空间变量x,y到文件name.mat中Home或Ctrl+A光标移动到首行End或Ctrl+E光标移动到行尾Esc或Ctrl+U清除一行Del或Ctrl+D清除光标后的字符Backspace或Ctrl+H清除光标前的字符Ctrl+K清除光标至行尾字Ctrl+C中断程序运行续表1-1命令行窗口常见命令与功能1.2MATLAB工作环境1.2.2图形窗口图形窗口是用来显示MATLAB所绘制的图形,这些图像可以是二维图形,甚至是三维图像。只要执行了任意一种绘图命令,图形窗口就会自动产生输入程序命令如下:x=1:0.2:10;y=sin(x);plot(x,y)运行结果如图1-1所示。图1-1运行程序自动弹出图形窗口1.2MATLAB工作环境1.2.3工作空间窗口工作空间窗口用来显示当前计算机内存中MATLAB变量信息,包括变量的名称、数据结构、字节数及其类型等,如图1-2所示,所显示变量信息可通过单击右上角“倒三角”图形,单击【选择列】按钮进行设置。同时,在MATLAB中可以对变量进行观察、编辑、保存和删除等操作,若要查看变量的具体内容,可以双击该变量名称。图1-2
工作空间窗口1.2MATLAB工作环境1.2.4M文件编辑窗口MATLAB命令窗口适用于编写短小的程序,对编写大型、复杂程序应采用文件编辑方法,即编辑M文件。在MATLAB命令行窗口输入edit,这时启动编辑器,并打开空白的M文件,如图1-3所示。图1-3
编辑器1.2MATLAB工作环境1.2.4M文件编辑窗口MATLAB文本编辑器提供了编辑M文件和调试M文件两大功能。其中,编辑功能与Windows编辑程序类似,此处不再赘述,只对下列几点进行特别说明:⑴注释:Ctrl+R快捷键注释%,Ctrl+T快捷键删除注释。⑵缩进:增加缩进量用Ctrl+]键,减少缩进量用Ctrl+[键。M程序调试器的热键设置和VC有些类似,下面列出来一些常用的调试方法。⑴设置/清除断点:使用快捷键F12。⑵执行:使用快捷键F5。⑶单步执行:使用快捷键F10。⑷stepin:遇到函数时,进入函数内部,使用快捷键F11。⑸stepout:执行流程跳出函数,使用快捷键Shift+F11。1.2MATLAB工作环境1.2.5帮助系统窗口常用的帮助信息有help、demo、doc、who、whos、what、which、lookfor等。如果用户知道某个函数的名称,并想了解该函数的具体用法,只需在命令行窗口中输入:例如:在窗口中输入helpcos就可以获得cos函数的信息。helpcoscosCosineofargumentinradians.cos(X)isthecosineoftheelementsofX.Seealsoacos,cosd,cospi.cos的文档名为cos的其他函数如果用户不知道一些函数的确切名称,此时help函数就无能为力了,但可以使用lookfor函数,即在使用lookfor函数时,用户只需知道某个函数的部分关键字,在命令行窗口输入:lookfor+关键字1.2MATLAB工作环境1.2.5帮助系统窗口如果用户不知道一些函数的确切名称,此时help函数就无能为力了,但可以使用lookfor函数,即在使用lookfor函数时,用户只需知道某个函数的部分关键字,在命令行窗口输入:lookfor+关键字1.3MATLAB中的函数类型MATLAB中的函数可以划分为M文件主函数、子函数、嵌套函数、私有函数和重载函数,下面分别进行讲述。1.3.1主函数M文件中的第一个函数称为主函数,一个M文件只能包含一个主函数,主函数之后可能附随多个子函数。M文件主函数的说法是针对其内部的子函数和嵌套函数而言的,一个M文件中除了主函数外,还可以编写多个嵌套函数或子函数。1.3MATLAB中的函数类型1.3.2子函数一个M文件中可能包含多个函数,主函数之外的函数都称为子函数,保存所用的函数名应该与主函数定义名相同,外部函数只能对主函数进行调用。所有的子函数都有自己独立的声明、帮助和注释等结构,只需要在位置上注意所处主函数之后即可,而各个子函数则没有前后顺序,可以任意放置。M文件内部发生函数调用时,MATLAB首先检查该文件中是否存在相应名称的子函数,然后检查这一M文件所在目录的子目录下是否存在同名的私有函数,然后按照MATLAB路径,检查是否存在同名的M文件或内部函数。1.3MATLAB中的函数类型1.3.3嵌套函数任一M函数体内所定义的函数称为外部函数的嵌套函数,MATLAB支持多重嵌套函数,即在嵌套函数内部继续定义下一层的嵌套函数,形如:functionx=A(p1,p2)functiony=B(p3)...end...end1.3MATLAB中的函数类型1.3.3嵌套函数MATLAB函数体通常不需要end结束标记,但如包含嵌套函数,则该M文件内的所有函数(主函数和子函数),不论是否包含嵌套函数都需end标记。嵌套函数的调用规则:①父级函数可调用下一层嵌套函数;②相同父级的同级嵌套函数可相互调用;③处于低层的嵌套函数可调用任意父级函数。1.3.4私有函数私有函数是具有限制性访问权限的函数,是位于私有目录private目录下的函数文件,这些私有函数的构造与普通M函数完全相同,访问条件是:①存放于该private子目录的上一层父目录中的M文件函数;②从存放于该private子目录上一层父目录中的M文件函数中发起调用的M脚本。1.3MATLAB中的函数类型1.3.5重载函数重载是计算机编程中非常重要的概念,它经常是用在处理功能类似,但是参数类型或个数不同的函数编写中。例如实现两个相同的计算功能,输入变量数量相同,不同的是其中一个输入变量的类型为双精度浮点类型,另一个输入类型为整型,这时候用户就可以编写两个同名函数,一个用来处理双精度浮点类型的输入函数,另一个用来处理整型的输入参数。MATLAB的内置函数中有许多重载函数,放置在不同的文件路径下,文件夹名称以@开头,然后跟一个代表MATLAB数据类型的字符。1.4MATLAB程序设计结构计算机语言程序控制结构主要有三大类:顺序结构、选择结构和循环结构。这一点MATLAB与其他编程语言完全一致。1.4.1顺序结构顺序结构是按照语句出现顺序执行的一种控制结构,即按由上到下的书写顺序执行,只有一个入口和一个出口。在MATLAB语言的函数中,变量主要有输入变量、输出变量及函数内所使用的变量。1.4MATLAB程序设计结构1.数据输入可使用input函数,实现从键盘输入数据。1)输入数值调用格式为:x=input('提示信息')例如输入:x=input('pleaseinputanumber:')运行结果如下:>>x=input('pleaseinputanumber:')pleaseinputanumber:8x=81.4.1顺序结构1.4MATLAB程序设计结构1.数据输入2)输入字符串调用格式为:x=input('提示信息','s')例如输入:x=input('pleaseinputastring:','s')运行结果如下:x=input('pleaseinputastring:','s')pleaseinputastring:thisisastringx='thisisastring'1.4.1顺序结构1.4MATLAB程序设计结构2.数据输出1)disp函数调用格式为:disp(输出项)其中,输出项既可以是字符串,也可以是矩阵。1.4.1顺序结构1.4MATLAB程序设计结构2.数据输出1)disp函数【例1-1】disp函数数据输出实例。程序命令如下:A=20+300-20*2;B=[121314;151617;181920];C='thisisastring';disp(A);disp(B);disp(C);1.4.1顺序结构运行结果如下:280121314151617181920thisisastring1.4MATLAB程序设计结构2.数据输出2)fprintf函数1.4.1顺序结构运行结果如下:洋洋的年龄是18注意:%d整数;%e实数:科学计算法形式;%f实数:小数形式;%s:输出字符串。fprintf函数可将数据按指定格式写入文本文件【例1-2】fprintf函数数据输出实例。程序命令如下:clc;clear;age=18;name='洋洋';fprintf('%s的年龄是%d\n',name,age)1.4MATLAB程序设计结构3.程序的暂停1.4.1顺序结构可使用pause函数执行程序暂停,其调用格式如下:
pause(延迟秒数)
如果默认延迟时间,直接使用pause即可暂停程序,指导用户按任意一个按键后程序继续执行。若要强行中止程序的运行可使用Ctrl+C命令。1.4MATLAB程序设计结构1.4.2分支结构选择结构用于判断给定的条件,根据判断的结果判断某些条件,根据判断的结果来控制程序的流程。MATLAB语言中的条件判断语句主要是if语句、switch语句和try语句1.4MATLAB程序设计结构1.4.2分支结构1.if语句1)单分支if语句if条件语句组end当条件成立时,则执行语句组,执行完之后继续执行if语句的后续语句,若条件不成立,则直接执行if语句的后续语句。1.4MATLAB程序设计结构1.4.2分支结构1.if语句2)双分支if语句if条件语句组1else语句组2end当条件成立时,执行语句组1;否则执行语句组2。语句组1或语句组2执行后,再执行if语句的后续语句。1.4MATLAB程序设计结构1.4.2分支结构【例1-3】计算分段函数的值,程序命令如下:x=input('请输入x的值:');ifx<0y=3*x+6elsey=5*x-2end运行结果如下:请输入x的值:8y=381.4MATLAB程序设计结构1.4.2分支结构3)多分支if语句if条件1语句组1elseif条件2语句组2...elseif条件m语句组melse语句组nend1.4MATLAB程序设计结构1.4.2分支结构【例1-4】输入三角形的三条边,判断能否构成三角形,如果可以构成三角形,则进一步判断三角形的形状。程序命令如下:1.4MATLAB程序设计结构1.4.2分支结构L=input('请输入三角形的三条边:');ifL(1)<=0|L(2)<=0|L(3)<=0disp('三角形的边长不能为0或为负');elseifL(1)+L(2)<=L(3)|L(1)+L(3)<=L(2)|L(2)+L(3)<=L(1)disp('不能构成三角形');elseifL(1)==L(2)&L(2)==L(3)disp('构成等边三角形');elseifL(1)==L(2)|L(1)==L(3)|L(2)==L(3)disp('构成等腰三角形');elsedisp('构成一般三角形');end1.4MATLAB程序设计结构1.4.2分支结构运行结果如下:请输入三角形的三条边:[112]不能构成三角形请输入三角形的三条边:[234]构成一般三角形请输入三角形的三条边:[333]构成等边三角形1.4MATLAB程序设计结构1.4.2分支结构2.switch语句多分支if语句用于实现多分支选择结构。if-else-end语句所对应的是多重判断选择,而有时也会遇到多分支判断选择的问题。MATLAB语言为解决多分支判断选择提供了switch-case语句。switch语句根据表达式的取值不同,分别执行不同的语句,其语句格式为:1.4MATLAB程序设计结构1.4.2分支结构switch表达式case表达式1语句组1case表达式2语句组2...case表达式m语句组motherwise语句组nend与其他的程序设计语言的switch-case语句不同的是,在MATLAB语言中,当其中一个case语句后的条件为真时,switch-case语句不对其后的case语句进行判断,也就是说在MATLAB语言中,即使有多条case判断语句为真,也只执行所遇到的第一条为真的语句。这样就不必像C语言那样,在每条case语句后加上break语句以防止继续执行后面为真的case条件语句。1.4MATLAB程序设计结构1.4.2分支结构【例1-5】利用switch语句实现简单计算器功能,即输入两个操作数和运算符号,即可进行加减乘数运算。程序命令如下:1.4MATLAB程序设计结构1.4.2分支结构N=input('请输入操作数:');S=input('请输入运算符号:','s');switchScase'+'Y=N(1)+N(2)case'-'Y=N(1)-N(2)case'*'Y=N(1)*N(2)case'/'Y=N(1)/N(2)otherwisedisp('erroroperator')end运行结果如下:请输入操作数:[823]请输入运算符号:-Y=-151.4MATLAB程序设计结构1.4.2分支结构3.try语句错误检查语句,当程序运行在复杂的环境下时,一些语句可能会产生错误,导致程序停止执行,这时我们需要将这些语句放在try...catch结构中,其一般形式为:try程序段A;catch程序段B;end1.4MATLAB程序设计结构1.4.2分支结构逐行运行程序段A,一旦运行出错,就跳过程序段A后面的语句,改为执行程序段B,此时命令行并不显示出错信息,若程序段A运行完没有出现错误,则跳过程序段B,继续执行后面的程序。该语句结构也可以只包含try语句,不含catch语句,其一般形式为:try程序段A;end逐行运行程序段A,若运行出错,就跳过程序段A后面的语句,继续执行后面的程序。1.4MATLAB程序设计结构1.4.2分支结构【例1-6】矩阵的乘法运算。程序命令如下:A=[1,2,3;4,5,6];B=[7,8,9;10,11,12];tryC=A*BcatchC=A.*Bends=lasterror;disp(s.message)%显示出错原因运行结果为:C=71627405572ans=Errorusing==>mtimesInnermatrixdimensionsmustagree.1.4MATLAB程序设计结构1.4.3循环结构程序中总会有对某些量的迭代运算,或对某个过程的重复处理,这就需要使用循环来简化程序。下面分别介绍for循环和while循环。1.for语句for语句用于循环次数确定的循环,调用格式为:for循环变量=表达式1:表达式2:表达式3循环体语句end其中,表达式1的值为循环变量的初值,表达式2的值为步长,表达式3的值为循环变量的终值,当步长为1时,表达式2可以忽略。1.4MATLAB程序设计结构1.4.3循环结构【例1-7】sum=1-2+3-4+5-6……+99-100,利用for语句求sum的值。程序命令如下:k=1;sum=0;fori=1:1:100sum=sum+k*i;k=-1*k;endfprintf('sum的值为%d\n',sum);运行结果如下:sum的值为-501.4MATLAB程序设计结构1.4.3循环结构【例1-8】输入5个整数,统计并输出其中正数、负数和零的个数。程序命令如下:a1=0;b1=0;c1=0;fori=1:5fprintf('请输入第%d个数:',i);x=input('');ifx>0a1=a1+1;elseifx<0b1=b1+1;elsec1=c1+1;endendfprintf('共有正整数%d个、负数%d个、零%d个',a1,b1,c1);1.4MATLAB程序设计结构1.4.3循环结构运行结果如下:请输入第1个数:1请输入第2个数:0请输入第3个数:0请输入第4个数:-1请输入第5个数:5共有正整数2个、负数1个、零2个1.4MATLAB程序设计结构1.4.3循环结构【例1-9】利用for语句嵌套实现输出乘法口诀表。程序命令如下:fori=1:10forj=1:10result=i*j;fprintf("%d*%d=%-3d",i,j,result);%-3d表示左对齐,占3位endfprintf("\n");%每一行后换行end1.4MATLAB程序设计结构1.4.3循环结构运行结果如图1-4所示。1.4MATLAB程序设计结构1.4.3循环结构2.while语句while语句是依条件结束的语句。调用格式为:while(表达式)循环体语句end其中,循环判断语句为某种形式的逻辑判断表达式,当该表达式的值为真时,执行循环体内的语句,直到表达式的逻辑值为假时,退出循环。在while语句中必须有可以修改循环控制变量的命令,否则该循环语句将陷入死循环中。或者循环语句中有能控制退出循环的命令,例如break语句和continue命令。当程序流程运行至该命令时,将退出当前循环,执行循环后的其他语句。1.4MATLAB程序设计结构1.4.3循环结构【例1-10】用while语句求所有的水仙花数。水仙花数是一个3位数的自然数,该数各位数的立方和等于该数本身。程序命令如下:k=100;while(k<=999)x=fix(k/100);y=rem(fix(k/10),10);z=rem(k,10);ifk==x*x*x+y*y*y+z*z*zfprintf('%d\n',k);endk=k+1;end运行结果如下:1533703714071.4MATLAB程序设计结构1.4.3循环结构3.continue、break和return⑴continue:用于循环控制。当不想执行循环体的全部语句,只想在做完某一步后直接返回到循环头时,在此处插入continue。continue后面的语句将被跳过。⑵break:用在for或while循环中,立即结束本层循环,而继续执行循环之后的下一条语句。嵌套语句中,它只跳出所在层的循环。⑶return:终止当前命令的继续执行,控制权交给调用函数或键盘。本章小结本章先介绍了MATLAB软件概述,进而介绍了MATLAB软件的工作环境和函数类型,最后介绍了三大程序设计结构。本章是全书的基础,重点做到熟悉MATLAB应用环境平台和基本操作,为后面核心技术与工程应用的学习打下良好的基础。习题1-1输⼊⼀个整数,若为奇数则输出其平方根,否则输出其立方根。1-2输入5个数,求其中最大数和最小数,分别用循环结构和调用max函数、min函数来实现。1-3计算1到999之间的所有偶数之和。1-4计算分段函数1-5编写M文件,等待键盘输入,输入密码20240101,密码正确,显示输入密码
正确,程序结束;否则提示,重新输入。1-6有一群鸡和兔子,加在一起头的数量是66,脚的数量是220,编写M文件解
答鸡和兔子数量各是多少?习题1-7编写函数文件,求
,将n作为函数的输入参数,y作为函数的输出参数。1-8编写程序,求
得值,其中,数字a和表达式中位数最多项的a个数,由键盘输入第2章MATLAB常用文件操作本章要点
本章主要讲解MATLAB常用文件的读取与写入,具体包括:Mat文件、Txt文件、Excel文件和图像文件的读取与写入。其中,数据输入是指从磁盘文件或剪贴板中获取数据,加载到MATLAB工作空间;数据输出是指将MATLAB工作空间的变量保存到文件中。通过这些功能的讲解,读者可以清晰地掌握各种常见文件的使用方法,并在后续章节MATLABAppDesigner设计中,可以简便地通过MATLABAppDesigner软件调用以上常用文件。本章要点:⑴Mat常用文件操作。⑵Txt文件的读取与写入。⑶Excel文件的读取与写入。⑷图像文件的读写。学习目标:⑴熟悉Mat文件的写入与读取方法。⑵掌握常用文件Txt文件的读取与写入方法。⑶熟悉xlsfinfo、xlswrite、xlsread函数的调用方法。⑷了解图像文件的基本分类。⑸熟悉imread、imwrite、imfinfo函数的调用方法。2.1Mat常用文件操作MATLAB通过Mat文件这种特殊的数据格式文件保存工作空间中的变量。Mat文件是一种双精度、二进制的MATLAB格式文件,扩展名为.mat,因此对于.mat文件的操作是必须掌握的。
Mat文件具有可移植性。一台机器上生成的Mat文件,在另一台装有MATLAB的机器上可以正确读取,而且保留不同格式所允许的最高精度和最大数值范围,它们也能被MATLAB之外的其他程序(如C或FORTRAN程序)读写。2.1.1Mat文件的写入Mat文件分为两部分:文件头部和数据。文件头部主要包括一些描述性文字和相应的版本标识,数据依次按数据类型、数据长度和数据内容三部分保存。将数据输出到Mat文件使用save函数,其调用格式如表2-1所示。2.1Mat常用文件操作2.1.1Mat文件的写入表2-1
save函数调用格式函数调用格式函数格式说明save将工作空间中所有变量保存到当前目录下的文件:MATLAB.matsavefilename将工作空间中所有变量保存到当前目录下的文件:filename.matsavefilenamex1x2...xn将变量x1,x2,...,xn保存到当前目录下的文件:filename.matsave('filename','-struct','s')保存结构体s的所有字段为文件filename.mat里的独立变量save('filename','-struct','s','f1','f2',...)保存结构体s的指定字段为文件filename.mat里的独立变量savefilenames*将工作空间中s开头的变量全部保存到filename.mat中;*为通配符save('filename',...)save指令的函数格式用法save(...,'format')按照不同的输出格式format来保存数据2.1Mat常用文件操作2.1.1Mat文件的写入MATLAB有很多不同的保存数据的方式,下面分别介绍。⑴首先产生数据,如图2-1(a)所示,程序命令如下:>>clc,clear,closeallwarningoffx=randn(100,1);⑵进行数据保存,如图2-1(b)所示,程序命令如下:savex.matx⑶也可以将x这个数据保存到y.mat中,如图2-1(c)所示,程序命令如下:savey.matx(a)产生数据(b)数据保存1(c)数据保存2图2-1
.mat文件保存2.1Mat常用文件操作2.1.1Mat文件的写入
MATLAB工作区存储着不同名称对应的数据包,用户可以右击选择【另存为】保存,具体如图2-2所示。
MATLAB默认的数据保存文件名为MATLAB.m,用户也可进行修改,例如修改为lk,单击【保存】按钮,在工作文件夹路径下可得到lk.mat文件,如图2-3所示。图2-2
另存数据图2-3
lk.mat文件2.1Mat常用文件操作2.1.1Mat文件的写入对于工作区的数据,也可以选择多个数据包,一起打包保存,如图2-4所示。图2-4多个数据打包保存2.1Mat常用文件操作2.1.2Mat文件的读取从Mat文件中加载数据到工作空间使用load函数,如表2-2所示。表2-2
load函数调用格式函数调用格式函数格式说明load加载MATLAB.mat中所有变量,如果加载前已存在同名变量,则覆盖loadfilename加载filename.mat中所有变量,如果加载前已存在同名变量,则覆盖load('filename','X','Y','Z')加载filename.mat中变量X、Y、Z,如果加载前已存在同名变量,则覆盖loadfilenames*加载filename.mat中以s开头的变量,如果加载前已存在同名变量,则覆盖load('-mat','filename')将文件当作Mat文件加载;如果不是Mat文件,返回错误load('-ascii','filename')将文件当作ASCII文件加载;如果不是数字文件,返回错误S=load(...)load指令的函数格式用法注意:除非必须与非MATLAB程序进行数据交换,存储和加载文件时,都应用MATLAB文件格式。这种格式高效且移植性强,保存了所有MATLAB数据类型的细节。2.1Mat常用文件操作2.1.2Mat文件的读取下面介绍一个数据加载的过程。首先进行MATLAB工作区和命令窗口的清理工作。clc,clear,closeallwarningofffeaturejitoff加载数据文件有以下三种方法:⑴采用load函数进行加载:load('x.mat')⑵也可输入如下命令:loadx.mat⑶用户也可以双击选择的数据文件,则MATLAB命令窗口自动生成代码:load('data.mat')
另外,利用load函数加载数据,速度较快,可以节约程序执行时间。load函数有助于提高系统执行效率,节约CPU损耗时间,特别是在循环读取图像数据时,可以事先将许多图像数据保存在一个cell细胞体中。2.2Txt文件的读取与写入
Txt文件也是我们常用的文本文件,文本文件的一个好处是可以清楚字符串的格式,并且Txt文件的保存数据和读取数据的快捷性受到业界的支持,本节着重讲解Txt文件的读取与写入操作方法。2.2Txt文件的读取与写入2.2.1Txt文件的打开
MATLAB对于这种常见的Txt文本提供了读取功能。在当前文件夹右击,单击【打开】选项,如图2-5所示,即可弹出类似于MATLAB脚本文件的文件窗口,如图2-6所示,脚本文件内容不会出现乱码,MATLAB软件完全兼容Txt文件。也可以在当前文件夹右击,单击【在MATLAB外部打开】选项,则采用文本文件查看模式,如图2-7所示。图2-5
图2-6
图2-7
2.2Txt文件的读取与写入2.2.2Txt文件数据的导入
Txt文件数据的导入,首先按照Txt文件的打开方式,采用MATLAB读取该文本数据。选择【导入数据】选项,如图2-8所示,即可生成如图2-9所示内容,可发现导入的数据自动以VarName1命名,以此类推为VarName2、VarName3...等。图2-8
导入数据界面图2-9
外部导入2.2Txt文件的读取与写入2.2.2Txt文件数据的导入
在如图2-9所示界面中选择【导入所选内容】,单击【生成脚本】命令,得到相应的脚本文件如图2-10所示。图2-10脚本文件2.2Txt文件的读取与写入2.2.2Txt文件数据的导入
【例2-1】试利用load和save函数,读写Txt文件中的数据。若文件matrix.txt中存储了一个如图0-11所示的矩阵,将该数据提取出来,存到变量b中:b=load('matrix.txt')b=
1000
0100
0010
0001图1-11
matrix文本文件将生成的变量b存入b.txt中:saveb.txtb-asciitypeb.txt1.0000000e+000.0000000e+000.0000000e+000.0000000e+000.0000000e+001.0000000e+000.0000000e+000.0000000e+000.0000000e+000.0000000e+001.0000000e+000.0000000e+000.0000000e+000.0000000e+000.0000000e+001.0000000e+002.3Excel文件的读取与写入
Excel是较为常见的存储和处理数据的软件,虽然其本身具有强大的数据处理能力,但是在大数据背景下,Excel已经不能很好地胜任目前的数据计算任务,这时就需要与MATLAB等软件相结合进行数据处理,然后将计算结果写入到Excel中。因此,Excel文件与MATLAB软件之间数据的传递方法就显得尤为重要。本节讲解Excel文件的读取与写入操作方法。
Excel文件和Txt文件一样,可以很好地保存数据并显示数据,实现Excel数据的传输和MATLAB的对接,将会对数据处理提供便利。读写Excel文件的相关函数如表2-3所示。表2-3
读写Excel文件的相关函数函数说明xlsfinfo检查文件是否包含Excel表格xlswrite写Excel文件xlsread读Excel文件2.3Excel文件的读取与写入
MATLAB数据导入功能是很强大的,其具有很强的兼容性,能够对几乎所有的数据类型进行导入操作。Excel数据的读取主要讲解xlsfinfo函数和xlsread函数。2.3.1Excel数据的读取1.xlsfinfo函数
xlsfinfo函数调用格式为:
type=xlsfinfo('filename')或xlsfinfofilename
如果指定文件filename能被xlsread读取,则返回字符串'MicrosoftExcelSpreadsheet';否则为空。
[type,sheets]=xlsfinfo('filename')
如果指定文件filename能被xlsread读取,则返回type='MicrosoftExcelSpreadsheet';否则返回为空。Sheets为字符串单元数组名,它包含文件中每个工作表的名称,如sheet1、sheet2等。2.3Excel文件的读取与写入
【例2-2】利用上述xlsfinfo三种调用格式,调用data.xlsx文件和no.docx文件,并观察返回内容。2.3.1Excel数据的读取程序输入命令如下:>>type=xlsfinfo('data.xlsx')
type='MicrosoftExcelSpreadsheet'
xlsfinfo'data.xlsx'
ans='MicrosoftExcelSpreadsheet'
[type,sheets]=xlsfinfo('data.xlsx')
type='MicrosoftExcelSpreadsheet'sheets=1×2cell数组{'Sheet1'}{'Sheet2'}
type=xlsfinfo('no.docx')
type=
空的0×0char数组2.3Excel文件的读取与写入2.3.1Excel数据的读取2.xread函数xread调用格式为:num=xlsread('filename')从Excel文件filename的第1个工作页中读取所有的数值到double型数组num中。它忽略头行、头列、尾行和尾列的所有单元为文本的行列,其他单元中的文本全部读取为NaN。【例2-3】试利用xlsread函数读取data.xlsx文件。如图2-12所示为data.xlsx文件中的数据。图2-12
Excel文件中的数据2.3Excel文件的读取与写入2.3.1Excel数据的读取xread调用格式为:num=xlsread('filename')从Excel文件filename的第1个工作页中读取所有的数值到double型数组num中。它忽略头行、头列、尾行和尾列的所有单元为文本的行列,其他单元中的文本全部读取为NaN。【例2-3】试利用xlsread函数读取data.xlsx文件。如图2-12所示为data.xlsx文件中的数据。图2-12
Excel文件中的数据2.3Excel文件的读取与写入2.3.1Excel数据的读取程序命令如下:num=xlsread('data.xlsx')运行结果如下:num=1NaN3488452NaN4816123NaN7128194NaN341710265NaN132212566NaN162714407NaN78716478NaN223718669NaN2542206110NaN2847226811NaN3152247512NaN3413268213NaN3762288914NaN4067302315NaN4372322416NaN9077341102.3Excel文件的读取与写入2.3.1Excel数据的读取除上述调用方法外,xlsread函数还有其他的几种常见调用方法:⑴格式:num=xlsread('filename',-1)说明:手动框选要读取的数据块,返回到矩阵num中。注意:当输入上述程序命令后,自动跳转到Excel表格中,然后手动框选数据后,单击【确定】按钮即可。⑵格式:num=xlsread('filename',sheet)
说明:读filename中指定页的数据到矩阵N中。
注意:sheet指的是Excel中的第几个工作表,写数字1或2或3等即可。
⑶格式:num=xlsread('filename','range')
说明:读filename中指定页、指定区域的数据到矩阵N中。
注意:range指的Excel表格中的单元格范围,例如:A2:G2或者B2:G6。
⑷格式:[num,txt]=xlsread('filename')
说明:读filename中的数据,返回数值数据到double型数组num中,文本数据到字符串单元数组txt中。txt中对应数值数据的位置为空字符串。2.3Excel文件的读取与写入2.3.1Excel数据的读取例如:对于图2-12所示文件进行调用。程序命令如下:[num,txt]=xlsread('data.xlsx')运行结果如下:num=1NaN3488452NaN4816123NaN712819
......15NaN4372322416NaN907734110txt=17×6cell数组
列1至6{'序号'}{'销售团队'}{'第一季度'}{'第二季度'}
{'第三季度'}{'第四季度'}{0×0char}{'猛虎队'}{0×0char}
{0×0char}
{0×0char}
{0×0char}{0×0char}{'梦之队'}{0×0char}
{0×0char}
{0×0char}
{0×0char}{0×0char}{'GOGOGO队'}{0×0char}{0×0char}
{0×0char}
{0×0char}......{0×0char}{'Lucky队'}{0×0char}{0×0char}
{0×0char}
{0×0char}2.3Excel文件的读取与写入2.3.1Excel数据的读取⑸格式:[num,txt,raw]=xlsread('filename')说明:读filename中的数据,返回数值数据到double型数组num中,非数值的文本数据到字符串单元数组txt中,未处理的单元数据到字符串单元数组raw中。raw中包含数值数据和文本数据。2.3Excel文件的读取与写入2.3.1Excel数据的读取例如对于图2-12所示文件进行调用。程序命令如下:
[num,txt,raw]=xlsread('data.xlsx')运行结果如下:raw=17×6cell数组
{'序号'}{'销售团队'}{'第一季度'}{'第二季度'}{'第三季度'}{'第四季度'}{[1]}{'猛虎队'}{[34]}{[88]}{[4]}{[5]}{[2]}{'梦之队'}{[4]}{[81]}{[6]}{[12]}{[3]}{'GOGOGO队'}{[7]}{[12]}{[8]}{[19]}{[4]}{'Dream队'}{[34]}{[17]}{[10]}{[26]}{[5]}{'多乐队'}{[13]}{[22]}{[12]}{[56]}{[6]}{'野狼队'}{[16]}{[27]}{[14]}{[40]}{[7]}{'铁娘子队'}{[78]}{[7]}{[16]}{[47]}{[8]}{'牛气冲天队'}{[22]}{[37]}{[18]}{[66]}{[9]}{'虎虎生威队'}{[25]}{[42]}{[20]}{[61]}{[10]}{'猪猪侠队'}{[28]}{[47]}{[22]}{[68]}{[11]}{'GPU队'}{[31]}{[52]}{[24]}{[75]}{[12]}{'攀攀队'}{[34]}{[13]}{[26]}{[82]}{[13]}{'摇摆队'}{[37]}{[62]}{[28]}{[89]}{[14]}{'心理师队'}{[40]}{[67]}{[30]}{[23]}{[15]}{'战神队'}{[43]}{[72]}{[32]}{[24]}{[16]}{'Lucky队'}{[90]}{[77]}{[34]}{[110]}2.3Excel文件的读取与写入2.3.2Excel数据的写入
MATLAB提供了Excel读取功能,同样也有Excel写入数据能力。MATLAB提供xlswrite函数供用户调用,其调用格式为:
xlswrite('filename',M)
将矩阵或字符串单元数组M写入Excel文件filename中。例如,输入程序命令如下:
xlswrite('number.xlsx',[123;456])
程序运行结果如图2-13所示,number.xlsx文件写入了命令中的数据。图2-13
写Excel文件2.3Excel文件的读取与写入2.3.2Excel数据的写入
观察上述方法,只能将数据写入Excel文件的默认位置,当用户想将数据写入指定的sheet中,其调用格式为:
xlswrite('filename',M,sheet)
其中,sheet可为一个double型的正整数,表示工作页序号;sheet也可以为一个带引号的字符串,表示工作页的名称。
注意:若sheet表示的工作页不存在,将新建一个工作页。此时MATLAB或显示警告信息:
Warning:Addedspecifiedwordsheet.2.3Excel文件的读取与写入2.3.2Excel数据的写入【例2-4】请利用xlswrite函数,将数组M=[123;456;789]写入example.xlsx文件中名为“矩阵”的工作表中。输入程序命令如下:xlswrite('example.xlsx',[123;456;789],'矩阵')example.xlsx文件在程序运行前如图2-14所示,程序运行后如图2-15所示。图2-14
Excel文件原数据图2-15写入Excel数据后2.3Excel文件的读取与写入2.3.2Excel数据的写入如果在指定sheet工作表中的指定单元格写入内容,其调用格式为:xlswrite('filename',M,sheet,'range')其中,sheet默认将M写入第1个工作表中。range指定单元格范围,即左上角单元格名称和右下角单元格名称,如:D2:F4。range指定的矩形范围大小应该等于M的尺寸大小。例如:xlswrite('apple.xlsx',[123;456;789],3,'D2:F4')产生的数据如图2-16所示。图2-16
在指定位置写入数据有时需要在完成写操作后,返回完成状态。写操作成功时status=1,否则status=0,其调用格式为:status=xlswrite('filename',...)返回写操作的完成状态和写操作过程中产生的警告或错误信息。其调用格式为:[status,message]=xlswrite('filename',...)2.3Excel文件的读取与写入2.3.2Excel数据的写入【例2-5】当前目录下有一个Excel文件score.xlsx,如图2-17所示。图2-17
score.xlsx的数据信息要求实现以下功能:⑴利用xlswrite函数,添加李某成绩:姓名:李星星;学号:6;测试成绩:80;期中成绩:90;期末成绩:98⑵命令行输入学生序号或姓名,查询学生全部成绩,当输入quit时退出循环。2.3Excel文件的读取与写入2.3.2Excel数据的写入【解析】问题1可以直接采用xlswrite函数解决问题,程序命令如下:s={'李星星','6','80','90','98'};xlswrite('score.xlsx',s,1,'A7:E7')运行结果如图2-18所示。图2-18
写入数据到score.xlsx2.3Excel文件的读取与写入2.3.2Excel数据的写入问题2采用input函数获取用户输入,用xlsread函数将相关学生信息读取出来。while1
str=input('\n请输入学生序号或姓名:','s');
ifisequal(str,'quit')%如果输入quit时推出循环
break
end
str2=str2num(str);%将输入关键字转化为数值
[numtxt]=xlsread('score.xlsx');%读取Excel文件
ifisempty(str2)%如果输入的关键字是姓名
n=find(strcmp(txt(2:end,1),{str}));%找出第几个学生
else
n=str2;%若为学号,找出第几个学生
end
fprintf(1,'姓名:%s序号:%d测试成绩:%d期中成绩:%d期末成绩:%d\n',txt{n+1},num(n,:));end2.3Excel文件的读取与写入2.3.2Excel数据的写入运行结果如下:请输入学生序号或姓名:3姓名:刘星星序号:3测试成绩:90期中成绩:95期末成绩:98请输入学生序号或姓名:王虎姓名:王虎序号:4测试成绩:80期中成绩:85期末成绩:75请输入学生序号或姓名:quit>>2.4图像文件的读写MATLAB具有强大的图像处理功能,并且MATLAB图像处理工具箱继承了很多图像处理的算法,为用户提供了很多便利。在MATLAB中,要想对一幅图像或者文件进行处理,首要步骤就是对图像或者文件进行读取,然后进行处理,最后保存处理后的图像。其中,MATLAB读写图像文件的函数如表2-4所示。表2-4
读写图像文件的函数函数调用格式函数说明imreadA=imread(filename,fmt)[X,map]=imread(filename,fmt)[...]=imread(filename)读图像文件filename。如果文件不在当前目录,filename中应包含文件路径。fmt为图像文件格式,如果默认,MATLAB会根据后缀名识别图像格式imwriteimwrite(A,filename,fmt)imwrite(X,map,filename,fmt)imwrite(...,filename)以格式fmt写图像数据A到图像文件filename,A可为m×n(灰度图像)或m×n×3(彩色图像)数组,fmt默认,格式依据filename后缀名识别imfinfoinfo=imfinfo(filename,fmt)info=imfinfo(filename)返回图像文件的信息2.4图像文件的读写在用MATLAB查询图像信息之前,要对常见的图像格式有一定的了解,常见的图像文件格式如表2-5所示。2.4.1图像文件的查询表2-5
常见的图像格式格式格式说明
格式格式说明'bmp'包括1、8和24位不压缩图像
'jpg'or'jpeg'8、12和16位基线的JPEG图像'gif'8位图像
在图像处理中,可以利用imfinfo函数来获取一张图片的具体信息,具体调用方法如表2-4所示。所获取图像的具体信息包括:图片的格式、尺寸、颜色数量、修改时间等等。其中,函数fmt对应于所有图像处理工具箱所支持的图像文件格式。由此函数获取的图像信息主要有:filename(文件名)、fileModDate(最近修改时间)、fileSize(文件大小)、format(文件格式)、formatVersion(文件格式的版本号)、width(图像的宽度)、height(图像高度)、bitDepth(每个像素的位数)、colorType:truecolor(图像类型)等。2.4图像文件的读写【例2-6】利用imfinfo函数获取图像信息示例。2.4.1图像文件的查询程序命令如下:imfinfo('MATLAB.jpg')ans=Filename:'D:\book\MATLAB.jpg'FileModDate:'25-Jan-202212:38:10'FileSize:10810Format:'jpg'FormatVersion:''Width:373Height:233BitDepth:24ColorType:'truecolor'FormatSignature:''NumberOfSamples:3CodingMethod:'Huffman'CodingProcess:'Sequential'Comment:{}2.4图像文件的读写MATLAB提供了非常重要的用于图像文件读取的指令函数imread,其常见调用格式如表2-4所示。imread读取图像的RGB值并存储到一个M×N×3的整数矩阵中,元素值范围为[0,255]。M×N×3的整数矩阵可以想象成3个重叠在一起的颜色模板,每个模板上有M×N个点。图像的像素大小为M×N,每个像素点对应有3个在[0,255]范围内的值,分别表示该点的R、G、B值。2.4.2图像文件的读取2.4图像文件的读写【例2-7】利用imread函数读取图像示例。2.4.2图像文件的读取程序命令如下:closeall;clearall;clc;I1=imread('girl.png');I2=imread('cat.jpg');I3=imread('D:\sunflower.jpg');set(0,'defaultFigurePosition',[100,100,1000,500]);%修改图像位置的默认设置set(0,'defaultFigureColor',[111]);%修改图像背景颜色的设置figure;subplot(1,3,1),imshow(I1);title('显示灰度图像');subplot(1,3,2),imshow(I2);title('显示RGB图像');subplot(1,3,3),imshow(I3);title('显示非当前路径下的图像');2.4图像文件的读写运行结果如图2-19所示。2.4.2图像文件的读取图2-19
图像的读取2.4图像文件的读写将图片写入坐标轴,可使用imshow或image函数。imshow或image函数都会产生一个图像对象,它们的区别如下:
⑴imshow的两种用法imshow(filename):将指定的图片读入坐标轴内;imshow(Data):将颜色矩阵Data映射到坐标轴内。若当前窗口存在坐标轴,imshow会将图像显示在当前坐标轴内;若当前窗口不存在坐标轴,imshow会产生一个隐藏的坐标轴,并将图像显示其中。2.4.2图像文件的读取⑵image函数用法,例如,输入程序命令如下:colorData=imread(filename);%获取图像数据image(colorData);%将图像数据铺满坐标轴⑶imshow(filename)等同于:colorData=imread(filename);%获取图像数据imshow(colorData);%将图像数据等比例缩放,显示到坐标轴2.4图像文件的读写⑷imshow不会扩展图像数据,即不会拉伸图像使其铺满坐标轴,而是改变坐标轴宽高比使其适应图像数据;image不会改变坐标轴的大小尺寸,而是扩展填充图像矩阵,使其铺满坐标轴区域。为避免图片失真,一般用imshow比较多。2.4.2图像文件的读取如果要将图像数据写到最标轴内,可使用image函数,调用格式为:
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度租车行业信用体系建设合同2篇
- 二零二五年度餐厅装修与品牌推广合作合同3篇
- 二零二五年度电子产品组装加工合同范本3篇
- 二零二五版电商平台法律风险防范与合规管理合同3篇
- 二零二五版城市核心区二手房交易中介合同2篇
- 封窗合同范本(2篇)
- 展会参展商培训合同(2篇)
- 二零二五版高新技术产业劳动合同标准文本3篇
- 二零二五版建筑工程合同管理与索赔争议调解服务协议3篇
- 二零二五版房地产项目股权出资转让合同样本3篇
- 资本金管理制度文件模板
- 2025年生产主管年度工作计划
- 2025年急诊科护理工作计划
- 高中家长会 高二寒假线上家长会课件
- 2024-2025学年山东省聊城市高一上学期期末数学教学质量检测试题(附解析)
- 违规行为与处罚管理制度
- 个人教师述职报告锦集10篇
- 四川省等八省2025年普通高中学业水平选择性考试适应性演练历史试题(含答案)
- 《内部培训师培训》课件
- 《雷达原理》课件-3.3.3教学课件:相控阵雷达
- 西方史学史课件3教学
评论
0/150
提交评论