[Matlab][Digital Processing]基本语法

Posted HuisClos

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Matlab][Digital Processing]基本语法相关的知识,希望对你有一定的参考价值。

抄书。


 1、注释:%

2、数据类型:

    ①数值:(u)int8,(u)int16,(u)int32,(u)int64,float,double,复数(虚部i),默认数据类型是double;char是6位,schar是8位,bitN指定任意N位带符号整数

    ②逻辑类型:True和False,使用logical函数实现强制类型转换;

    ③字符串:字面值通过单引号识别,注意所有字符都是Unicode的;

    ④数组:(Matlab特色)数组是基本数据单元,标量被看作一行一列的数组

                   多维矩阵下标用(1,2)表示,可以使用类似python的切片,用‘:‘代替所在维数的全部;

                   End表示该维最大下标;

                   可以直接通过赋值来扩展数组的大小。

    ⑤比较运算符:同C(复数的比较只比较实部)。

3、矩阵:普通矩阵

                稀疏矩阵:

                       稀疏化:sparse;逆操作:full;

                       稀疏矩阵有很多对应普通矩阵的创建函数,如speye,sprand,sprandn;有些函数是专对稀疏矩阵的,包括nnz, nonzeros等

4、单元阵列(胞元),特殊数组,每个元素都是指向其他数据结构的指针。

                         用{}表示解引用该下标对应的元素。创建:直接赋值a{1,1}=…,或者用cell先创建,然后再赋值;显示:用celldisp;绘图:用cellplot;删除元素:用clear或者赋予空值;

                        常用单元阵列存放字符串(可以用cellstr转换二维字符数组);

                        实现可变参数类型:参数名是varargin,这样输入的参数都转化为单元阵列varargin中的元素;

                        返回不定个数的结果,类似,用varargout;

5、名称搜索路径:①当前环境的变量:whos

                               ②内置函数:库函数

                               ③当前目录的.M文件

                               ④设置的其他搜索路径:在File-Set Path中添加

6、转换函数:num2str、str2num;sscanf;

                       其他的类似C中强制类型转换的格式:double(str);

                      进制转换:hex2num,hex2dec等

                      二维字符数组,用char(‘‘,‘‘),或者strvcat在竖直方向进行添加;

7、字符串操作函数:基本和C中函数名字一致,但是添加了很多功能,如str(n)cmp(i)(只能比较相等…);

                                  判断格式(同ctype.h中的函数,isalpha变成了isletter);

                                  findstr(一维),strmatch(二维,返回行数),strrep;

                                  strtok(返回tuple,左边是分隔符左边,右边是剩下的);

                                  upper,lower;

8、结构数组:用关键字struct创建或者直接赋值(如a.x=…,自动推断)。

                        A=struct(‘field1‘,var1,‘field2‘,val2,…)或者直接用字符串数组或单元阵列指定结构域名。删除域:rmfield;访问域:getfield和setfield(直接用‘.‘亦可);

9、变量:长度不超过31,大小写敏感可以通过casesen on/off切换,

10、特殊变量:有些常用的常量被集成到matlab中,包括pi,I,j(虚数),Inf,NaN,clock,date,eps(精度),ans(上一个结果),有些可以看作函数。注意不要覆盖这些函数。

11、运算符:逻辑—与C类似,xor(异或)除外,^表示幂次;

                     关系—与C类似,不等于用~=表示;

                     算术—左除(\)和右除(/)分别将左边或右边求逆然后相乘;

                     在所有运算符前面加上.表示的不再是矩阵的运算法则,而是对应元素的计算;[]:构造数组;():多种含义,可装载下标;续行:…

12、内存顺序:列主序,在使用单下标时非常重要。

13、显示输出:默认是小数点后4位,改变格式要用format命令,如format short等;或者使用disp函数;或者使用fprintf函数,格式与C语言printf类似

14、数据文件:最简单的是save和load,后缀用.dat,参数可以是-ascii(方便共享)

15、内建函数:数值类的代数函数基本都有,包括max、min、三角函数、sqrt、mod;取整的ceil、fix和round

16、画图,plot指定坐标轴、颜色、标记类型、线形、线宽,格式是plot(x,y,‘PropertyName‘,value)这种;title指定标题、xlabel等指定坐标轴的名称,grid on打开网格;图例用legend;打印图像用print;axis控制坐标轴范围;hold on/off在同一坐标轴画图;figure n,选择当前图像;gcf返回当前图像数;在一个窗口画图:subplot(m,n,p),p要从上到下从左到右数;字体修改用stream modifier;极坐标:polar;

     其他图:stair(s)(阶梯型), bar(条形图), barh(垂直的条形图), compass(极坐标图), pie(饼状图),hist(直方图),stem(针头图)

     三维作图:plot3;mesh(网格);surf(表面);等高线(contour),用meshgrid辅助确定范围

     直接作图(无需中间数组):ezplot,fplot;后者甚至支持tex命令

     其他坐标空间:semilog的x用对数,y轴用线形;semiloge相反;loglog两个轴都是对数

17、 逻辑类:ischar, isempty, isinf, isnan, isnumeric等

18、语句:选择——if xxx elseif xxx else xxx end,这里的格式有点类似python,不必用括号,但是以断行分,缩进不是必须的;switch,通C语言,但是不需要break断流,可以用case{1,2}来合并相同的情况,关键字otherwise表示其他,case后面用逗号。

    异常(错误)——try…catch…注意这里不是面向对象,所以也没啥异常类,这个东西比较鸡肋,错误的话就直接跳出到catch模块了。

    循环——while…end;for i=1:2:10…end,虽然不如Python的in关键字那么简洁,也比较方便。Break、continue的用法通C

19、调试:F5:执行到断点,F10:逐行调试

20、逻辑数组:直接判断数组与常量的大小比较,生成的数组只有1和0,也就是逻辑数组;

                         可以通过"对应"来简化运算。从而快速筛选所需元素。

21、函数:每个函数对应一个M文件,格式为function[out1,out2…]=fname(in1,in2…),返回值:直接令函数名=一个值即可;变量按值传递(准确来说是写时复制)。实参的个数和形参可以不等(但是不能用缺省实参),这种情况必须在程序中检查(比缺省实参略麻烦,但是更灵活,使用nargin, nargchk, inputname等函数);

                 通过全局变量共享数据,声明方式是global;

                 持久(静态)数据用persistent关键字声明。

      函数的函数:数学的概念,通过调用函数对另外的函数的某个属性(如:极值),进行计算(和FP中的高阶函数有雷同的地方)。

     子函数(中间函数):在一个M文件中声明多个函数,除去最上面一个外都是子函数。子函数只能在所在M文件中可见。

     私有函数:以private命名的子目录中的函数,只有在其父目录中是可见的。

     错误:error(‘msg‘),msg为空数组不输出,警告用warning(‘msg‘)

     随机数:rand和randn

    直接执行字符串:eval(类似java)

    查找函数:lookfor,有类似python的注释结构

    I/O函数:textread:逐行读取并解析(格式化),适用于以行为分隔的有序数据;

                   matlab使用文件标识(类似于句柄或linux 的文件标示符)来确定文件,函数名和C类似,多出fgetl(按行读取,忽略换行符)和fgets(不忽略换行符),文件默认打开方式是二进制。fclose(‘all‘)会关闭所有文件;fprintf也可输出到文件;fscanf可以从文件中读取格式化数据;确定文件的存在性:exist;输出IO相关的错误信息:ferror;文件末尾判定:feof;uiimport:通过UI导入或直接导入剪贴板的程序;

22、图形:图像对象以句柄标识,每个图形包括uimenu(目录)、uicontrol(控件)、坐标系和uicontextmenus(右键);

                   gca返回当前坐标系句柄,gco返回当前选择对象句柄,一般习惯在存储句柄的变量名后面加上H;

                  更改对象属性:get、set,指定属性名即可,也可以使用属性编辑器完成这一过程(propedit,对于最终用户),除了标准属性外,用户也可添加任意数量的自定义属性数据到文件中(用函数setappdata和getappdata)。

                 查找属性值匹配的任意对象:findobj(比较慢);

                 暂停等待:waitforbuttonpress;

                 图像的位置:查找position属性,坐标系是标准坐标系的格式(坐下原点);

                 修改默认属性,属性名前面加上Default,修改父对象的默认属性后子对象的对应属性也会改变。

23、GUI:matlab支持基本的GUI创建,方便做出一些比较简单的框架。用guide设计,然后再自动生成的M文件中添加或修改相应函数即可。

 

以上是关于[Matlab][Digital Processing]基本语法的主要内容,如果未能解决你的问题,请参考以下文章

Matlab实现二维数字图像相关(2D Digital Image Correlation, 2D-DIC)ADIC2D代码复现及原理介绍

Matlab实现图像压缩

Matlab常用图像处理命令108例

Matlab常用图像处理命令108例

Matlab实现小波变换

Matlab常用图像处理命令108例