读《MATLAB GUI设计学习笔记》的体会
摘要:本文在简介书籍全部内容的同时,主要介绍阅读《MATLAB GUI设计学习笔记》后所注重的,所有体会的内容,加以自己的理解和感受,以达到读有所用的效果,并且在此基础上激励自己学习更高深的知识。
关键字:MATLAB,Tex,HTML,
1、概述
基于自己所学的专业,我感觉到学科的计算量很大,而且其中还有很多的数值分析问题。这些难题依靠人的能力是很难较好解决的,所以必须借助计算机,借助相应的软件才行。通过别人的推荐和自己的体验,我觉得MATLAB在处理我所遇到的学科难题时显示出很高的效率,于是我决定好好学习一下这个编程语言和软件。在看完一些介绍MATLAB基础知识的书籍后,我又觉得自己不能只局限于用MATLAB去解决问题,而是要利用其去编写更方便和高效的函数或程序,所以我便从网上买到了《MATLAB GUI设计学习笔记》(第二版)。在寒假里,我详细地查看了每一章,每一节的内容,所看的内容如下所述。
2、内容简介
本书共分为十一章,每章依次由四节以下内容组成:知识点归纳、重难点讲解、专题分析、精选答疑。知识点归纳详细全面介绍了本章的内容与知识点,容易出错的地方用【注意】标明,个别地方配以详细地案例加以讲解;重难点讲解简要概括了本章的重点和难点,便于更好的理解和掌握;专题分析系统全面地对某个知识点进行专门讲解,以达到一针见血的效果;精选答疑筛选出在实践中出现疑惑的问题加以解答。另外本书还包含有大量的例题,这样边学边练,可以进一步牢固地掌握GUI的设计技巧和方法。
第1章:GU设计预备知识。这一章主要介绍了MATLAB的基本程序单元、几种GUI设计中常用的数据类型和矩阵操作函数,以及程序设计的5种句型(for,while循环结,if,switch条件分支结构和try…catch结构)。之后以专题形式,分别讲解了MATLAB的编程风格、代码优化以及基于MATLAB的M文件编程小技巧。
第2章:文件I/O。本章主要介绍了文件I/O操作的相关的数,分为高级文件I/O和低级文件I/O两部分。商级文件I/O介绍了读写MAT或ASCII文件、读写TXT文件、读写Execl文件、读写图像文件及读写音频文件的方法及相关函数;低级文件I/O介绍了读写二进制文件和读写文本文件的方法及相关函数。之后以专题形式,全面讲解了读写文本文件的技巧和方法。
第3章:二维绘图简介。本章主要介绍了与GLJI设计密切相关的线性二维绘图及其相关
函数、绘图工具函数和绘图注释函数.二维绘图函数常用于GUI设计中的教据可视化模块.
第4章:句柄图形系统。本章主要介绍了句柄图形对象的概念及其操作函数,各种句柄图形对象的概念及其操作函数,各种句柄图形函数的操作方法、属性及含义。之后以专题的形式,全面讲解了超文本标记语言(HTML)在MATLAB中的运用、表格设计及坐标轴设计。
第5章:预定义对话框。本章介绍了MATLAB环境下可调用的所有预定义对话框,包括公共对话框和MATLAB自定义的对话框。之后以专题的形式,详细介绍了预定义对话框在GUI设计中的应用。预定义对话框使得GUI设计变的更加直观和灵活。
第6章:采用GUIDE建立GUI。本章首先介绍了采用GUIDE建立GUI的方法,GUI的M文件构成,回调函数的分类,以及回调函数的编写方法,然后举例介绍了GUIDE环境下GUI组件的使用方法。最后以专题的形式,系统讲解了GUI对象之间的数据传递方法及回调函数的应用实例。
后面的7至11章的内容较为复杂,而且在我的学习的范围之外,因此不作介绍。
3、特色简介
除了一般介绍GUI设计的书籍都会包含的内容外,本书中还有其他的一些特色。下面就将介绍这些不一样的特色。
特色一:编程风格
代码格式要正确,表达清晰通用,这样才能写出具有共享性和易维护性的代码。良好的代码写作规范使得程序容易调试,易于修改。
(1)、命名规则:
①、变量名应该能够反映该变量的含义或用途,以小写字母开头,采用大小写混用模式
或下画线分割模式。
②、临时变址的变量名尽量短小。
③、前缀m或n通常用于申明数值对象,m代表matrix,n代表number,p代表指针。str代表字符串。
④、尽量避免变量名以数字区别,以大小写区别或以后缀s区别。
⑤、布尔型变量禁止使用否定式的变量名,因为看起来别扭,也不简洁。
⑥、函数名应该具有意义,要采用英文形式,禁止使用汉语拼音。
(2)、基本语句
总体原则:避免使用含糊代码。代码不是越简洁越好,而是越清楚越好。
①在文件开始的位置,为函数的功能,变量的意义编写注释。
②浮点数的运算要注意系统的误差。
③尽量在表达式中少用数字,多用可用来调试的变量。
④不要在循环语句中扩展矩阵的维数,而应预先给数组分配好内存。MATLAB的这个功能虽说方便,但会增大内存的开销。
⑤注释最好用英文书写,以免复制时出现乱码。
对于编程风格,很多人都很迷惑,为什么要讲这个?我觉得自己对这个问题深有感触。这种风格是很难体会到的,估计只有在你与别人对比时才能看出差距出来。每个人写出的代码都不可能完美无错,也不可能简洁明了,所以在学习编程一段时间后就要严格规范一下自己的风格,以便在以后的学习中能逐步获得良好的编程效率与体验,也就是这样,你才会逐渐喜欢上编程。
特色二:代码优化
(1)、遵守Performance Acceleration的规则
具体简化为以下7条:
①只有使用规定的数据类型,MATLAB才会对其加速。
②超过三维的数组不会进行加速。
③当使用for循环时,只有遵守以下规则才会被加速:
⒈ 循环范围只用标量值来表示。
⒉ 循环内部的每条语句都要满足上面的两条规则,即只使用支持加速的数据类型,只使用三维以下的数组。
⒊ 橄环内只侧用了内建函数。
④当使用if,elseif,while或switch.其条件测试语句中只使用了标量值时,将加速运行。
⑤不要在一行中写入多条操作,这样会减慢运行的速度。
⑥不要改变原来变量的数据类型或形状(大小,维数)。
⑦优先使用MATLAB中的内建函数。
(2)、遵循5条原则
①、尽量避免使用循环。
②、在多重循环中,将循环次数少的放在外层,将循环次数多的放在内层。
③、预先给要使用的数组分配好内存。
④、尽量使用函数,而不是使用脚本。
⑤、认真检查代码中有波浪线提示的地方。
对于代码的优化,这就比编程风格更难掌握了。只有在牢固掌握基本知识和程序运行的基本原理后,才能对代码进行优化。本书的作者对MATLAB研究深入,提出了诸多的优化方案,确实值得借鉴。细细琢磨一下,也能对自己的编程能力有所提高。
特色三:M文件编程小技巧
在用MATLAB编程时,可以借助编辑器的一些功能来提高效率,例如下面的一些技巧。
(1)、Tab键右移整段代码。
(2)、Shift+Tab键左移整段代码。
(3)、输入函数名的前几个字符后按Tab键,编辑器会自动将其补全。
(4)、输入函数名和左括号后,停顿几秒,编辑器会提示函数的所有调用格式。
(5)、F1键显示某个变量或函数的帮助信息。
(6)、将鼠标放在红色波浪线上,编辑器会给出提示和帮助信息,可以帮助用户修改错误的变量,低效率的函数等。
(7)、采用代码分段符%%,对代码进行分段高亮显示,这样可以使得函数的每一个阶段的代码整齐有序的显示,便于调试与修改。
(8)、采用%{……%}结构来注释整段代码。
特色四:Tex字符
Tex字符可以表示希腊字母,可以很方便的显示一些数学函数或表达式等。例如:\alpha表示α,\beta可以表示β。除此之外,Tex字符还可以设置字体,颜色,位置。
对于字体的设置有以下几种:
①、\bf:设置字体为粗体字。
②、\it:设置字体为斜体字。
③、\rm:设置为正常字体。
④、\fontname{字体名}:设置字体名。
⑤、\fontsize{字体大小}:设置字体大小。
对于颜色的设置有两种:
①、\color{颜色字符串}:颜色名为相应的英文单词。例如:\color{red}。
②、\color[rgb]{a b c}:设置字体颜色为RGB矩阵{a b c}所表示的颜色。例如:\color{rgb}[1 1 1]。
对于位置的设置有三种:
①、_表示下标。例如:\alpha_2表示α2。
②、^表示上标。例如:\alpha^2表示α的平方。
③、后面直接跟数字,则自动表示下标。
MATLAB的Tex字符,确实是对数学问题的一种的很好的显示方法,这却是其他编程工具软件所没有的。
特色五:超文本标记语言(HTML)在MATLAB中的应用
HTML是一种为普通文件中的某些语句加上标记的语言,其目的在于运用标记是文件达到预期的显示效果,它不是一种程序设计语言,不同C,C++,java,它只是标记语言。MATLAB支持一些HTML语言,也是为了使得显示更为清楚和方便。
(1)、标记语法
①、任何表示都由“<”和“>”所围住,且大小写均可。
②、标记的首字母不能为间隔,空格,跳格等。
③、附加的参数只能在起始的标记中。
(2)、围堵标记和空标记
①、围堵标记,顾名思义,它以起始标记和结束标记将所要处理的文字围住。例如:‘<html><b>加粗显示</b></html>‘会将“加粗显示”四个字加粗显示,其中<b>…</b>就为围堵标记。
②、空标记,相对于围堵标记,就是没有结束标记。例如:
‘<html>按钮文字<br>多行显示</html>‘会将“多行显示”四个字显示在“按钮文字”的下一行,其中<br>就为空标记。
(3)、介绍完了一些基础的知识点,下面可以讲一下具体的实例了。
①、<font size=# color=#>…</font>可以设置字体的大小和颜色,例如:
‘<html><font size=13 color=’Gray’>字体设置</font></html>‘。
②、物理字体设置,包括一下这些。
<b>…</b>:加粗。
<i>…</i>:斜体。
<u>…</u>:底线。
<s>…</s>:删除线。
<tt>…</tt>:等宽字体。
<sup>…</sup>:上标。
<sub>…</sub>:下标。
③、换行控制标记
<p>:分段。
<br>:换行。
<nobr>:不自动换行。
④、标准表格标记
<table>…</table>:定义表格
<tr>:定义表行。
<th>:定义表头。
<td>:定义单元格。
<th colspan=m>:单元格跨列,m为所跨的列数。
<th rowspan=m>:单元格跨行,m为所跨的行数。
例如:’<html><table><tr><td><th colspan=3>Breakfast Menu<tr>’,’<th rowspan=2>deal<th>Food<th>Drink<th>Sweet<tr>’,<td>A<td>B<td>C</table></html>’将显示下面的表格。关于表格设计的HTML语言还有很多,我还要继续学习。
4、结束语
MATLAB是矩阵实验室的英文简称,表明了它对矩阵运算的高效和便捷。对于我所学的专业,这个软件将会有极大的帮助。而我对于它的学习,还是只是停留在开始的阶段。在今后的生活中,我会找寻更多的优秀书籍,促使自己早日掌握关于本专业的MATLAB必要知识,为以后的研究和工作打好基础。
第二篇:MATLAB秦志宏学习心得
略述MATLAB所学内容
1.转置运算符(’)可以来初始化行向量。
2.first:incr:last命令的应用,例如1:2:10意思就是在1和10 以1为开头间隔2取值.
3.矩阵的点乘:a.*b 就是两个同等矩阵的同位置元素相乘。
4. h(2,:)表示取第二行所有列,其他数据以此类推。
5.需要作图时输入的命令为plot(x,y,“r-”)意思是关于x y的图像,其中“r”表示图像的颜色是红色,“-”是指图形的形状是由“-”组成的,若将“-”改成“o”则将由“o”来构成图形。
6. disp函数打印字符型数组;fprintf函数显示带有相关文本的一个或多个值。
7. [3.4] 这个表达式创建了1×1数组(一个标量),包含数值3.4.这时括号可以省略.
8. [1.0 2.0 3.0] 这个表达式创建了1×3数组,一维行向量[1 2 3]
9.plot(x,y,‘r--’)用来画图;title表示标题; xlabel、ylable表示x、y轴的标记;grid on代表在图象中出现网格线,grid off代表去除网格线;属性字符串可指定轨迹的颜色、符号的类型、线的类型;loglog对数尺度。
10.[1.0;2.0;3.0] 表达式创建了一个3×1数组,一维列向量
11.[1,2,3;4,5,6] 这个表达式创建了一个2×3数组,矩阵
12. zeros(3,4) 创建一个3×4零矩阵
13. ones(6) 创建一个6×6元素全为1矩阵
ones(3,4) 创建一个3×4元素全为1矩阵
eye(4) 创建一个4×4的单位矩阵
eye(3,4) 创建一个3×4的单位矩阵
14. 表达式1:2:10是以2为步长,1和10分别为第一个和最后一个数值创建的一个1×5行向量[1 3 5 7 9]。
15. 假设定义了一个数组arr1=[1 2 3 4],那么arr1(3)为3,arr1([1 4])为数组[1 4]
16. arr2= arr2(1,:)为[1 2 3], arr2(:,1:2:3)为
17.fprintf(‘The value of pi is %6.2f\n’,pi) 将会打印出'The value of pi is 3.14',因为后面带有一个换行符所以输出之后会自动换行。
18. ,则
19.A.*B, A和B的元素逐个对应相乘.两数组之间必须有相同的形,或其中一个是标量.
A*B, A和B的矩阵乘法.A的列数必须和B的行数相同
20. maxval=max([1 -5 9 -3])=9表示该矩阵中最大值为9
21. plot(x,y1,’r--’,x,y2,’bo’);(y1用红色虚线画出,y2用黑色圈圈画出)
22. clc 擦去一页命令窗口,光标回屏幕左上角
clear 从工作空间清除所有变量
23. legend(‘f(x)’,’d/dx f(x)’)(标注)
23. 逻辑运算:&(与)、|(或)、~(非)、xor(逻辑异或)
24.format long 保留小数点后14位,format long e表示用科学计数法并且保存14位小数,一班计数格式为format表示保留4位小数且不用科学计数法。
25.3<4为真返回结果为1,同理3 <= 4返回1,3 == 4为假返回0,3 > 4返回0,4 <= 4返回1,3~=4返回1,3~=3返回0,xor(用法为xor(a,b))xor(2,3)=0,xor(0,10)=1
26. 查询x数组的第n个元素,x(n);
查询x数组的第2到4个元素,x(2:4);
查询x数组的第4到最后1个元素,x(4:end);
查询x数组的第3、2、1个元素,x(3:-1:1);
查询x数组的小于n元素,x(find(x<n));
查询x数组的第4、2、5个元素,x([4 2 5]);
将x数组的第n个元素赋值为A,x(n)=A;
27. sort(x)命令将数组x中的元素按升序排列。
当x是多维数组时,命令是将x中各列元素按升序排列;
当x是一个字符型单元数组,命令是将x中的元素按ASCп排列y=sort(x,mode)中,mode决定排序方式,选择ascend将按升序列,选择descend将按降序排列,y与x保持相同大小。
28. speye(n)生成n阶单位稀疏矩阵, speye(m,n)也生成一个单位稀疏矩阵,其维数是m和n中较小的,注意:它所生成的矩阵仍然是m*n的矩阵,它只是在显示主对角线上的元素。 speye(size(a))生成与a大小相等的稀疏矩阵,主对角线上元素为1,其它为0。
spones(a)创建矩阵a中非零元素为1的稀疏矩阵。
speye(3)= (1,1) 1
(2,2) 1
(3,3) 1
29. 稀疏矩阵与满矩阵的转换
a=sparse(x)将满矩阵x转化为稀疏矩阵a。
a=sparse(i,j,s,m,n,nzm)生成m*n阶的稀疏矩阵a,向量s的元素分布在以向量i的对应值和向量j的对应值为坐标的位置上,nzm为给出的矩阵存储的非零元素的个数,不能小于s的长度,此时nzmax是返回用于存储非零值的空间长度。
30.a=sparse(i,j,s,m,n)生成m*n阶的稀疏矩阵a,向量s的元素分布在以向量i的对应值和向量j的对应值为坐标的位置上,其中nzmax=length(s)。
电气0901班
秦志宏
200924050110