写在前面: 最近上数学建模课,再次开始学习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; |