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-Aans=
0 0 0
1 1 1
但注意3*3矩阵减去3*2是会报错的
Pascal矩阵(杨辉三角)
P=pascal(n)
生成一个Pascal矩阵 如图为pascal(4)
A = pascal(n,1)
返回帕斯卡矩阵的下三角 Cholesky 因子,A 是对合矩阵
对于正定矩阵P,存在Cholesky 因子 A,A*A’=P
下为A = pascal(3,1)
1 0 01 -1 01 -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是纵横比
2021-1-29 美赛前MATLAB的学习笔记(基础、脚本、代数方程、微分方程、矩阵初步、作图基础)相关推荐
- 2021-02-02美赛前MATLAB的学习笔记(机器学习(分类、聚类、深度学习))
机器学习 机器学习是一中工具.方法,通过对机器训练,进而学习到某种规律或者模式,并建立预测未来结果的模型. 机器学习可以分为监督学习和无监督学习 有监督学习方法,是提供答案的,主要包括分类和回归 无监 ...
- 高等数学学习笔记——第一百讲——微分方程稳定性初步
一.问题引入--如何预测种群数量的变化规律?如何控制卫星运行的稳定性? 二.稳定性的概念 1. 一阶微分方程解的变化 2. 一阶微分方程组解的变化 3. 一阶方程的平衡点及稳定性(平衡点.奇点).稳定 ...
- 2021年美赛准备(学习笔记) 2016年C题优质基金挑战
2021年美赛准备(学习笔记) 2016年C题优质基金挑战 2021年美赛准备 2021年美赛准备(学习笔记) 2016年C题优质基金挑战 题目 怎么解决问题 算法的选择 背景 数据处理 数据填充 最 ...
- 让多核CPU占用率曲线听你指挥(Windows实现)——《编程之美》1.1学习笔记
让多核CPU占用率曲线听你指挥--<编程之美>1.1学习笔记 Problem: 写一个程序,让用户来决定Windows任务管理器(Task Manager)的CPU占用率.有以下几种情况: ...
- 系统辨识理论及MATLAB仿真——学习笔记(1)
系统辨识理论及MATLAB仿真学习笔记(1) 前言 目录 第1章 绪论 1.1 建立数学模型的基本方法 1.2 系统辨识的定义 1.3 系统辨识的研究目的 1.4 数学模型的分类 1.5 几种常见的数 ...
- matlab bwmorph spur,matlab图像处理学习笔记-数学形态与二值图像操作
matlab图像处理学习笔记-数学形态与二值图像操作 数学形态学主要处理的是二值图像,因为二值图像的处理操作比较简单. 9.1 数学形态学图像处理 基本思想:利用一个称作结构元素(structurin ...
- Task02:学习笔记文本预处理;语言模型;循环神经网络基础
Task02:学习笔记文本预处理:语言模型:循环神经网络基础 文本预处理 文本是一类序列数据,一篇文章可以看作是字符或单词的序列,本节将介绍文本数据的常见预处理步骤,预处理通常包括四个步骤: 读入文本 ...
- Windows驱动开发学习笔记(二)—— 驱动调试内核编程基础
Windows驱动开发学习笔记(二)-- 驱动调试&内核编程基础 基础知识 驱动调试 PDB(Program Debug Database) WinDbg 加载 PDB 实验:调试 .sys ...
- PS学习笔记------运用脚本及自动化批量处理
PS学习笔记------运用脚本及自动化批量处理 简单脚本运行+自动批处理多图片 简单脚本运行 自动批处理图片 简单脚本运行+自动批处理多图片 本次实现的功能是: 1.运用脚本在ps中将图片的文档名称 ...
最新文章
- 用ILSpy查看Session.SessionID的生成算法
- 服务器邮箱备份文件在哪里,如何轻松将数据文件备份到电子邮箱?
- python项目归纳总结-这4个Python实战项目,让你瞬间读懂Python!
- MATLAB实战系列(二十八)-用matlab爬取火车票信息
- Ubuntu系统下载地址(Ubuntu、ISO、Ubuntu下载)
- a73*2+a53*2指的是什么_篮球内外线是什么意思?篮球外线是什么位置-百科-
- 前端学习/资源/工具网站
- java求两个时间相差月_java计算两个时间相差几个月
- Android之多媒体视频的播放和录制
- 来自腾讯的高性能服务器架构思路
- PHP单元测试框架 - PHPUnit介绍
- android 照片变油画,最近很火照片变油画Glaze软件
- 随机生存森林的模型建立和结果解读
- JS黄金分割法实现随机漂亮颜色!
- 2018 软件学院 AK 杯 题解
- Element UI table宽度自适应
- 区块链巨头2018:几家欢喜几家愁 |链捕手
- [宋史学习] 王全斌功过
- MongoDB增删改查基础操作
- 聚氯乙烯增韧改性研究新进展
热门文章
- express的api接口暴露
- c++-tissue_habit-namespace
- 问题锦集 | 百度网盘播放视频显示:网络连接失败,请检查您的网络设置并稍后再试
- 兰州大学计算机技术专业学位,兰州大学信息科学与工程学院(专业学位)计算机技术保研条件...
- x-window简介
- python----模块
- 网页特效——潘多拉魔盒(.html)
- 【新手基础教程】SP-MOD之 TOF测距的使用
- 使用Python操作XLS文件(wps中叫et)
- Wifi信号强弱判断