matlab入门使用

介绍

MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。

MATLAB的功能比较多样化并且在数据处理方面非常强:有
1.数据计算
2.符号计算
3.图像处理
4.建模仿真
5.程序设计
6.界面设计

MATLAB语言优势:
1.高效的矩阵运算机制
2.多样化的操作途径
3.工具箱和函数库
4.良好的扩展能力

基础

常量和变量

常量是MATLAB系统内定义的数值,例如pi圆周率等,是可以直接使用和计算的,可以手动改变值,但是重启后还是会回到原来的值。
变量就如其他编程语言的定义一样,但是MATLAB可以不用定义类型和声明,直接赋值就可以。

常用符号

1.基本数学运算符:+,-,(矩阵乘法),/(矩阵右除),.(数组乘法),\(矩阵左除),^,‘’’(共轭转置)
2.关系运算符:==,>,<,~=(不等于)

关键字,我们可以输入命令iskeyword 来展示所有的关键字.

常用函数

1.zeros(n) 生成n阶0矩阵
2.eye(n) 生成n阶单元矩阵
3.rand(n) 生成n阶随机矩阵
4.magic(n) 生成n阶魔术矩阵

数学函数:
5.abs(n) 绝对值
6.sin(n) sin值
7.cos(n) cos值
8.round(n) 四舍五入
9.fix(n)
10.ceil(n)
11.floor(n)
12.log(n) log值
13.sqrt(n) 开根值

14.size(n) 行数和列数
15.length(n) 列数
16.plot(变量) 绘制数据图形

数据类型

整型和浮点型
整型中有向量[] ,可以使用n:n:n来快速创建等差数列,[第一个数:累加值:临界值]
single()单精度浮点型,int8()有符号整型,uint()无符号整型,char()字符型,num2str()数值转字符串。。。

字符串型
MATLAB的数据存储是矩阵的形式,而且是按列来存储的,和其他语言不一样。

逻辑类型
对矩阵取非,与别的编程语言不同,对非0元素返回0,对0元素返回1

结构体类型
结构体类型就和c++里面的struct一样,但是MATLAB可以直接就使用a.b赋值,不用声明。也可以使用struct()函数来创建,
在struct(‘名字’,值,‘名字’,‘值’) 第一个是名字,第二个是值,第一个一定是字符串类型,第二个可以随便类型。
结构体的查看 a(:,1) 可以查看。但是如果是矩阵不是结构体,那么 a(:,1) 就是取a的第一列。
fieldnames(),getfield(),rmfield()等函数的使用。

元胞数组
可以包含任何数据类型的元胞组成的数组。
创建方式,直接赋值法:a{n,n}=值 或者是 a(n,n)={值} 或者 {值,值;…},还有函数法:cell(n) 创建n*n的元胞数组,然后赋值。
访问的话可以使用:a{n,n} 或者是 a(n,n) 但是前者是访问具体值,而后者显示的是数据类型。
删除元胞的话就直接赋值空就可以了,例如:a{n,n}=[]

日期类型
clock() now() date() weekday() eomday() calendar() 函数的使用。datenum(变量)可以转换成数值型日期类型,datestr()可以转换成字符串型日期类型,datevec()转换成向量型。

矩阵运算

MATLAB里面二维数组是保存矩阵的形式,也是MATLAB用的最多的数据格式。矩阵能大大提高运算效率和速度。

程序设计

MATLAB与其他编程语言很大程度上相似,所以我就不列出与其他语言一样的地方。在MATLAB里面有脚本文件和函数文件。
函数文件就类似与其他语言的方法,只是将方法提取出来放在一个单独文件里。函数文件的第一句一定是:function 输出变量 = 函数名(变量,变量2…)
输入控制语句:imput()【如果输入的是字符串,那么就要在方法添加第二个参数“s”】;键盘输入语句:keyboard;暂停语句:pause;指令显示控制语句:echo;警告语句:warning,error,errordlg;

matlab的代码编辑中的code cell模式,简单说就是用两个百分号加一个空格’%% ‘将代码划分为一块一块,每块可以单独运行(通过菜单cell下的 Evaluate current cell等菜单命令)。

图形绘画

图形有多种图形绘制,盒形图【boxplot(x)】,正态分布图,直方图【hist(x)】,散点图【scatter(x,x*2)】,条形图【bar(x,y) 】,饼图【pie(x)】,面积图【area(x)】,排列图【pareto(x)】,罗盘图【compass(u,v)】,羽毛图【feather(x)】,矢量图【quiver(x,y,px,py)】,杆型图【stem(x)】,阶梯图【stairs(x)】,极坐标图【polar(x,y)】,等值线图【clabel(x,h)】。。。
我们如果需要设置坐标轴的范围或者是刻度,使用set()函数,获得坐标轴的信息用get()函数,而加上坐标轴标注可以用xlabel()或者是ylabel()函数也行。如果想要家网格,我们可以使用grid命令。如果我们需要在原来绘制图的基础上叠加图形,我们可以使用hold on命令。ginput()函数可以输出和获得点的坐标信息。

三维图形的绘制:曲线图【plot3(x,y,z)】,网格图【mesh(x,y,z)】,表面图【surf(x,y,z)】,等值线图【contour(x,y,z)】,切片图【slice(x,y,z)】,瀑布图【waterfall(x,y,z)】。。。
如果网格图前面遮挡了后面的图,我们想要变成透视的话可以使用hidden命令。我们如果需要一些更复杂或者更特殊的三维图,我们可以使用MATLAB提供的函数产生具体的坐标值,然后根据上面的绘制函数绘制出这些点的三维图。我们使用默认的配置的话,产生的三维图是用的默认的颜色映射表,如果我们要修改可以使用colormap()函数来修改成自己需要的颜色表,而colordef命令是设置背景颜色的。三维图的光源可以让图形更加好看,以及对比跟强烈,使用camlight命令创建光源,使用light()函数设置光源,lighting命令设置函数照射模式,material命令设置反射材质。

有函数绘图的方法:plot(),plotyy(),ezplot(),loglog()。。。很多,是MATLAB提供的函数,很方便,查阅即可掌握。

应用程序接口

在使用MATLAB的函数和算法的时候,我们需要使用MATLAB来运行,但是我们很多时候是使用其他编译语言和编译工具,只是需要MATLAB的一部分功能,这个时候我们就可以使用接口来让其他语言使用它。MATLAB编译器可以让m文件转变其他格式的文件。

编译器配置我们使用:mex -setup 命令来选择编译器,旋转完就配置好了。重新配置的话需要:mbuild -setup 命令。然后我们使用mcc函数来编译我们的m文件,转成需要的格式,具体用法可以百度。

引擎技术

引擎技术是为了提供在其他程序里面可直接调用MATLAB函数的技术,也就是说前台调用后台的功能,但是依然没有脱离出MATLAB,还是需要使用MATLAB才行。

mex技术

mex技术是为了让MATLAB使用其他语言编写的函数功能文件,例如可以将c文件转成dll文件,这样MATLAB就可以直接调用了。

mat技术

mat技术是为了保存MATLAB中数据的技术,能够方便的导入和导出变量数据。

com组件技术

组件对象模型,是面向对象的技术,建立在二进制级别上的规范,不受语言类型的限制,com生成器能把MATLAB开发的算法做成独立的组件,可以被c,c++,java,c#等其他支持com的语言使用。
使用comtool命令可以打开工具窗体,之后的操作都是通过窗体的形式进行的。不过当发布的时候需要安装mcr。

文件导入和导出

文件导入和导出有分三种:低级,高级,图形界面。

低级就是:fopen(),fwrite(),fclose(),fread(),fprintf(),fscanf(),fgetl(),fgets(),fseek(),ftell()等函数。

高级就是:open(),load 命令,importdata(),textread(),csvread(),dlmread(),save 命令,csvwrite()等函数。

图形界面:就是点击file按钮的import data选项,非常方便简单。

图片的操作:imread(),imshow(),image(),imwrite()。