zoukankan      html  css  js  c++  java
  • [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文件中添加或修改相应函数即可。

  • 相关阅读:
    java回调函数这样说,应该明确了吧!
    Aamazon Web Service EC2 Ubuntu 新建用户而且用ssh连接host
    Html animation by css(Sequence Js Tutorial)
    shell脚本一键安装mysql5.7.x
    HDU 4544 湫湫系列故事――消灭兔子
    简明python教程 --C++程序员的视角(八):标准库
    简明python教程 --C++程序员的视角(七):异常
    简明python教程 --C++程序员的视角(六):输入输出IO
    简明python教程 --C++程序员的视角(五):面向对象的编程
    简明python教程 --C++程序员的视角(四):容器类型(字符串、元组、列表、字典)和参考
  • 原文地址:https://www.cnblogs.com/HuisClos/p/9078642.html
Copyright © 2011-2022 走看看