2021-1-29 美赛前MATLAB的学习笔记(基础、脚本、代数方程、微分方程、矩阵初步、作图基础)

为什么要学MATLAB?因为MATLAB是很棒的数学工具,但和其他编程软件一样,它永远是工具,更重要的是我们要解决的问题和解决问题的过程,所以数学建模,学MATLAB的语法是不够的,更要掌握数学模型,了解数据处理的方法,并融合到自己的思想里。笔者了解的不多,所以先摘一张表,共勉。

类型方法
数据型拟合、回归、分类、聚类、主成分等
连续型微分、偏微分、差分、函数等
离散型目标规划、智能算法(神经网络、遗传、模拟退火、蚁群、粒子群)等
评价型层次分析法、多因子决策、回归等
机理型自主编程

MATLAB基本数据类型

single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char

MATLAB符号含义的粗浅理解

(),在函数后,规范函数输入,也可以用作数组的输出 比如b(1)
[],在函数输出,规范函数输出,也可以用作数组的输入 比如b=[1,2]
{},在数据类型里是元胞数组,和结构数组很像,但结构数组是一般数组带名字,元胞是下标访问
元胞:a(1,2)={[2,2;3];5}
结构:b(1).name=

%注释
;用在语句后,在命令行窗口不作输出,也可以在数组里表示分行
:单作下标的时候,表示该维度全部范围
~可以是取反,可以是忽略参数[~,idx]=sort(kidx);
@ 粗浅地理解是方便传参的符号。

它可以和函数构成函数句柄。那么什么是句柄呢,句柄是指针的指针,相当于指针是地址,而句柄是代号,在Windows系统里,指针是会变化的,句柄指向的位置是会变的,但句柄是不会变化的。不管理解了没有,反正记住这两种用法。

y=@sin

那么sin(pi/6)=y(pi/6)

f=@(x,y)x.*y;

此时输入

x=[1,1,1,1];
y=[2,3,4,5];
f(x,y)

输出

ans =
 2     3     4     5

MATLAB脚本

用edit命令创建脚本

edit mysphere

执行该命令后,会在当前文件夹创建 myshpere.m文件并打开

MATLAB保存工作区

save

save('image_label.mat','label','image_name','m','n','k') 

这边第一个是保存的文件名称,后面几个是保存的变量

MATLAB解微分方程

matlab中解常微分方程有两种方法,一种是符号解法,另一种是数值解法
常用符号解法
即使用dslove命令

dsolve('Dy=1','x')

dsolve命令中 D表示一阶微分,D2表示二阶,以此类推
默认变量为t 所以使用时应声明变量
此外,如图所示警告,该写法可以运算,但不符合新版要求,应该先声明符号变量
在这里插入图片描述
输出结果:
在这里插入图片描述
这是官网的要求
在这里插入图片描述
--------------------------------------------我是分割线------------------------------------------
新的写法:

一般微分方程

单个因变量的 返回原函数

syms y(t) a
eqn = diff(y,t) == a*y;
S = dsolve(eqn)

S = C1*exp(a*t)

多个的返回一个结构

syms y(t) z(t)
eqns = [diff(y,t) == z, diff(z,t) == -y];
S = dsolve(eqns)

S = struct with fields:
z: [1x1 sym]
y: [1x1 sym]

如果要输出y和z ,再输入

ySol(t) = S.y
zSol(t) = S.z

or

S.y
S.z

也可以一开始就写如下代码,定义输出类型

syms y(t) z(t)
eqns = [diff(y,t)==z, diff(z,t)==-y];
[ySol(t),zSol(t)] = dsolve(eqns)

其中syms 声明符号变量
eqn(equation 方程式)
diff(y,t)表示y关于t的一阶导数
diff(y,t,2)表示二阶,以此类推

带条件的微分方程

syms y(t) a
eqn = diff(y,t) == a*y;
cond = y(0) == 5;
ySol(t) = dsolve(eqn,cond)

对于没有显式解的微分方程(不做深入了解)

sol = dsolve(eqn,'Implicit',true)

MATLAB矩阵

矩阵的基本操作

  • 定义一个数组/矩阵

A=[1,1,1]
B=[1,1,1;2,2,2]

  • 数组的基本运算
    +,- 作为双目是基本的加减运算,作为单目是正负运算
    .* 逐元素乘法 A.*B 表示 A 和 B 的逐元素乘积。(逐元素,即aij*bij)
    .^ 逐元素求幂 A.^B 表示包含元素 A(i,j) 的 B(i,j) 次幂的矩阵。(逐元素,即aij^bij)
    ./ 逐元素右除 A./B 表示A(i,j)/B(i,j) 。
    .\ 逐元素左除
    .’ 普通转置

  • 矩阵的基本运算
    ’ 复共轭转置 和普通转置区别在于对于含复数的矩阵,复共轭转置后复数取共轭
    / 右除 A/B 结果为BX=A的解
    \左除 B\A 结果为 AX=B的解
    *矩阵乘法
    ^ 矩阵幂 矩阵可以作为指数(由于笔者精力和能力不够 先不深入了解)

数组运算隐式转换,自动填充,对于之前定义的A、B

B-A

ans=
0     0     0
1     1     1

但注意3*3矩阵减去3*2是会报错的

Pascal矩阵(杨辉三角)

P=pascal(n)

生成一个Pascal矩阵 如图为pascal(4)

如图为pascal(4)

A = pascal(n,1)

返回帕斯卡矩阵的下三角 Cholesky 因子,A 是对合矩阵
对于正定矩阵P,存在Cholesky 因子 A,A*A’=P
下为A = pascal(3,1)

 1     0     0
 1    -1     0
 1    -2     1

在这里插入图片描述

P=pascal(3,'double')

指定矩阵的类

求矩阵的逆

inv(A)

在这里插入图片描述

单位矩阵

eye(5)

在这里插入图片描述

全0矩阵

zeros(5)

在这里插入图片描述

全1矩阵

a=ones(5)

在这里插入图片描述

对角矩阵

a=diag[1,2,3]

矩阵转化为三角矩阵

下三角(保留矩阵的下三角部分)

tril()

上三角

triu()

在这里插入图片描述

MATLAB绘图

画球体

[x,y,z] = sphere();  % 创建一个球,括号里参数k表示由k*k平面组成,默认20*20个平面组成,半径默认为1
r = 2;
figure(1);				%打开窗口,可写可不写,默认打开一个窗口,参数是窗口的编号
surf(x*r,y*r,z*r)       % 绘制半径为2的球.
axis equal              % 坐标轴长度相等. //axis是纵横比
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

萧易风船长

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值