写在前面: 最近上数学建模课,再次开始学习MATLAB。说再次是因为一年前上过公选课,但是基本上学的都丢了。这篇文章基本上是上课都笔记和一些重要拓展知识,既是帮自己整理学习、再次入门,又是帮助大家了解MATLAB、更好地在数学建模以及其它方面使用。
另外,不要看什么《21天学会MATLAB》之类的书,不应该贪多求全地系统学习,只需要善用 help ,用什么学什么就好了。
介绍
历史
参见发明人的文章: MATLAB发展简史
优点
可靠的数值运算
- 建立在矩阵和数组上
图像和图形显示和处理
- 二维、三维都可以画
高水平的图形界面设计风格
特点
面向对象特性
单一的数据类型:矩阵
矩阵自动动态伸缩
矩阵大小几乎任意大
编程简单
变量不用定义
图形处理和数值计算能力
系统扩充方便,随时主动添加函数
帮助系统
与C等语言的接口
……
界面
上方
属性区,类似于word、excel的上方工作栏
左上
项目、目录区,显示当前项目中各个文件的组合情况
点击左边一个m文件可打开编辑器,方便编程
左下
工作区,显示现在声明了哪些变量
双击打开,可以看其它信息
右边
编程区,可以完成赋值、运算等,类似python
语法
数的运算
四则运算
次方运算
初等函数
pi代表π,Inf代表无穷,i、j代表虚数,NaN代表不存在
eps:最小的数,2^(-52)
realmin: 最小实数
矩阵
声明
a=[1,1]:1个一行的矩阵
b=[1,2,3;4,5,6] :一个3*2的矩阵
c=[1 1 3]' :一个3行1列的矩阵。本质上是 ' 的转置作用
[a,a] 拼接多个矩阵
快速声明
a=[1:20] 生成从1到20的行向量,步长为1
a=1:3:20 步长为3,从1到20的行向量
a=zeros(5) ,构建一个5*5的0矩阵,其它有 a=ones(3) a=eye(3)
运算
* 矩阵相乘,也可以矩阵的数乘
.* 点乘,相同规格的矩阵对应位置的数对应相乘
A\B 左除,相当于A*X=B方程组的解
A.\B 点除,需要二者行数列数相同,每个位置的数是 b/a 的值
A/B 右除,相当于XA=B的解
inv(a) 求a的逆
函数
format long 之后的显示位数变多
format short 之后的显示位数变少
末尾打 ; 就可以不输出,不加分号会输出一下
class(a) 显示数据类型
eig(a) 求a这个矩阵的特征值、特征向量 (matlab中,函数可以返回多个值)
clc 清理右边工作区
clear 清除左下角声明的变量
a(2) a的第二个元素(不是从0开始)
a(2:4) a从第2到第4个元素
a(3:5,2:6) 索引一个子矩阵
a(3:5,2:end) 使用end 直接选到矩阵末尾
画图
二维
1 | close all; |
其中直接发挥作用的是 plot 函数。
值得注意的是,x和y一定是向量,而不是一个数,做法是:x=linspace(first,end,how many)
plot 的全部属性为 plot(x,sin(x),'r-','linewidth',2) ,分别代表x的数、y的数、颜色和线形、线宽为2。
-虚线--实线:点线-.点虚线。此外,附加一个d,比如'dr-'标记了每个取样点标记为菱形y黄色,m品红色,c青蓝色,r红色,g绿色,b蓝色,w白色,k黑色
若要画出多条曲线,只需将坐标对依次放入plot函数即可:例如 plot(x, sin(x), x, cos(x),···);
调整图轴范围 axis([xmin,xmax,ymin,ymax])
标题 title('sin(x)','fontsize',24)
xy轴属性 xlabel('x','fontsize',24)
网格 grid on
多个线画一张图:一开始加一个 hold on ,避免新图覆盖旧图
区分不同曲线,加个图例就好:legend('sin(x)','cos(x)','fontsize',20)
可用subplot来同时画出数个小图形于同一个视窗之中:
1 | subplot(2,2,1); plot(x, sin(x)); |
三维
plot3 线性图
1 | x=0:pi/50:10*pi; |
surf 曲面图
1 | x=0:0.15:2*pi; |
mesh 网线图
1 | x=0:0.15:2*pi; |