个人学习笔记_matlab基础教程

MATLAB 基础教程笔记

本笔记基于视频:

https://www.bilibili.com/video/BV13D4y1Q7RS?p=9&share_source=copy_web

0零基础入门matlab教程基础版,听懂人话就能学会!毕业设计/研究生/神经网络工具箱/机器学习/数学建模matlab

由于基本是自用的学习笔记, 可能有部分内容难以阅读, 如有错误望指正

matlab基础入门是非常不错的

基本知识

安装MATLAB时, 安装的版本意思为年份 + a/b, a 表明此版本是上半年发行的, 同理, b表示下半年

左侧是项目文件显示, 一开始打开MATLAB的时候, 程序中间只有一个命令行窗口

但是如果仅仅使用命令行, 就比较难看(并且非常非常不好使, 老师一点都没教, 平常上课的时候也是直接用命令行做演示, 我怎么感觉他有一种等到最后看笑话的感觉)

新使用的最好是脚本文件类型, 点击主页->新建->脚本

之后在里边编辑代码进行运行就行

变量规则

  1. 变量名区分大小写

  2. 变量名称长度不超过63位

  3. 变量名以字母开头, 可以由字母、数字和下划线组成, 但不能使用标点

  4. 变量名应当简洁明了, 通过变量名可以直观的看出变量所表示的物理意义

MATLAB数据类型

清空所有环境变量及其命令

clear all 清空工作区中的所有变量

clc 清空命令行区域所有内容

变量名中不能使用标点(还有人使用标点? 锤死)

数据类型

  1. 数字

  2. 字符与字符串

字符串用单引号表示

s = ‘a’
abs(s)

输出结果为97, 表示ASCII码

char(97)

表示输出ASCII码为97的字符

num2str(65)

C语言里的常用函数了(或者是C++?老久没用了)

将数字转换为字符串

length(str)

​ 依然是常用函数, 获取字符串长度

  1. 矩阵

矩阵定义:

A = [1 2 3; 4 5 6; 7 8 9]

​ 表示创建一个三行三列的矩阵

B = A’

​ 表示B矩阵是A矩阵的转置矩阵

C = A(:)

​ 表示将A矩阵按列拉伸(这个可以理解为按列读取以后塞到C中, 在C中表现的形式是1列, 注意是列而不是行)

​ 打个比方, 比如有一个矩阵表示如下:

[1, 2, 3]
[4, 5, 6]
[7, 8, 9]

​ 上面这个矩阵, 经过这个函数就会变成:

[1]
[4]
[7]
[2]
[5]
[8]
[3]
[6]
[9]

并不是横着排列的,而是竖着的,

按照一列一列读取变成单列矩阵,

使用过像素操作图片进行测试时会比较明显的发现,

遍历并清除一半的像素(每个色域矩阵都这样处理),

最终得到的是只剩下右半边图像的图片,

原理便是因为这个转化为列;

D = inv(A)

表示求幂操作, 从数学角度来看, 需要输入的数据是一个方阵才能解决

E = zeros(10,5,3)

表示创建一个全零矩阵

其中参数代表:

  1. 第一个参数10 表示矩阵有10行

  2. 第二个参数5 表示矩阵有5列

  3. 第三个参数3 表示这个矩阵是”三维”的,多少微就代表这个矩阵组中有多少个矩阵

同样, 使用函数ones可以创建全一矩阵

MATLAB中的矩阵随机函数;

rand、randi和randn的区别

  1. rand生成均匀分布的伪随机数. 分布在(0~1)之间

主要使用语法:

rand(m,n) 生成m行n列的均匀分布的伪随机数,

rand(m,n,’double’) 生成指定精度的均匀分布的伪随机数, 参数可以是single;

rand(RandStream, m, n) 利用指定的RandStrean(随机种子)生成伪随机数

  1. randn生成标准正态分布的伪随机数(均值为0, 方差为1)

主要使用语法与第一个相同

  1. randi生成均匀分布的伪随机数

主要使用语法:

randi(iMax) 在开区间(0,iMax) 生成均匀分布的伪随机整数

randi(iMax, m, n) 在开区间(0, iMax)生成m行n列随机内容矩阵

randi([iMin,iMax], m, n) 在开区间(iMin, iMax)生成m行n列随机矩阵

元胞数组

这是一种数据类型, 是数组的一种, 内部元素可以属于不同的数据类型

就和Python中的元组一样, 可以随便塞变量进去

元胞数组

A = cell (1 , 6)

此代码生成一个元胞数组, 其中参数表示行数列数

表示生成1行六列的元胞数组

在以上句子上, 衔接以下代码:

A{2} = eye(3)

eye表示生成一个3*3单位矩阵, 然后赋值到元胞数组的第二个位置

在MATLAB中, 下标索引是从1开始的, 而不是其他编程语言一样的从0开始

A{5} = magic(5)

magic表示生成一个幻方, 幻方的意思就是一个完整的像数独一样的序列

在宏观输出显示时, 不会显示元胞数组中的矩阵的具体信息, 只会说明一下这东西是矩阵,多大, 类似的信息

结构体

相当于python语言中的字典

使用代码为:

books = struct(‘name’, {{‘Machine Learning’, ‘Data Mining’}}, ‘price’,[30 40])

books.name 	%获取属性

books.name      	%1

books.name(1)     	%2

books.name{1}           %3

其中这三句的区别在于:

  1. 获取name这个属性, 如果name是一个数组, 也输出数组中的内容

  2. 获取name这个属性的(在已经确认这个属性是一个数组的情况下), 那么获取到的是一个cell类型的数据

  3. 获取到的是一个字符串类型的数据

MATLAB 矩阵操作

矩阵的定义与构造

A = [1 2 3 4 5 6 7 8]

若有多行, 使用分号进行间隔

B = 1:2:9

其中, 1表示开始的数值, 9表示结束的数值, 中间的值表示递增的值, 不能够缺省

C = repmat(B,3,1)

其中1表示,在行内进行重复,

3表示在列内进行重复

或者更好的理解方式是: 对于函数使用: repmat(B,3,3)创建一个矩阵

这个矩阵的内容为:

[B B B]
[B B B]
[B B B]

然后再把B中的内容替换进去

D = ones(2,4)

​ 表示生成一个2行4列的全1矩阵

矩阵的四则运算

比如说有如下两个矩阵

A = [1 2 3 4; 5 6 7 8]
B = [1 1 2 2; 3 3 1 1]

A + B:表示对应项相加

A – B: 表示对应项相减

A * B’: 矩阵乘法, 行数与列数相同才能进行转置

A .* B: 表示两个矩阵对应项相乘

A / B: 表示A乘以B的逆矩阵(inv(B))

A ./ B: 表示对应项相除

矩阵的下标
A = magic(5)
B = A(2,3)

表示取出第2行第3列的数据

C = A(3,:)

冒号表示取出全部

这里表示取出第三行所有数据

D = A(:,4)

表示取出第4列内容

[m,n] = find(A > 20)

表示找出A矩阵中大于20的东西, 然后就将其索引值找出来

那么最后通过mn取到的对应位置数据就能够找到我们需要的数据

MATLAB 逻辑与流程控制

判断结构

if……end

if 条件表达式

	……语句体……

end

if…else…end

if表达式

	语句体1

else

	语句体2

end

switch … case … end

switch 表达式(数值或者字符串)

	case 数值或者字符串1

		语句体1;

	………

	otherwise

		语句体

end

循环结构

for循环结构

for 循环变量 = 初值:步长:终值

	执行语句1

	……

	执行语句n

end

while 循环

while 条件表达式

	执行语句1

	……

	执行语句n

end

MATLAB绘图

二维平面绘制

figure 表示新建立一个幕布

plot(x,y) 在x,y位置绘制一个点

​ 其实这里的x,y表示的都是数组, 所以这里的绘制就是绘制多个线条

title(字符串) 表示这个图表的名称

xlabel 表示x轴信息(在坐标轴位置显示标签), 也就是X轴的标题

ylabel 表示y轴信息(在坐标轴位置显示标签), 也就是Y轴的标题

xlim([x1 x2]) 表示将显示的图像中x的范围限制在x1到x2内

plotyy(x,y1,x,y2) plotyy函数表示绘制的图像, 在X相同的情况下, 绘制多个y值, 也就是说, x坐标是公用的, 但是这个函数实际上不推荐使用, 因为这个函数本身存在兼容性问题, 并且 plot(x1,y1,x2,y2)也能够绘制相同的线条

一般简单绘制自定义点或者线条的格式如下:

plot(x, y, ‘自定义图形参数字符’)

其中所使用的参数字符如下:

自定义图形颜色:

颜色 字符 颜色 字符
r 粉红 m
绿 g c
b w
y k

线型选项

线型 符号
实线 -
虚线 --
冒号线 :
点画线 -.

数据标记点选项参数

符号 点类型 符号 点类型
. ^ 上三角
+ 十字号 v 下三角
o 圆圈 < 左三角
* 星号 > 右三角
x 叉号 p 五角星
s 正方形 h 六角星(太阳)
d 菱形

除了在创建图像时直接使用参数

在线条绘制之后, 依然可以修改线条的格式

此使用方式参照

https://blog.csdn.net/shulianghan/article/details/115826548

【MATLAB】基本绘图 ( 修改对象属性 | 修改坐标轴属性 | 修改坐标轴范围 | 修改文字大小 | 修改刻度 | 修改线属性 )

采用修改句柄属性的方式

使用对象存储plot函数以及更多函数生成的句柄值

然后使用

set(句柄值, ’对应属性名(字符串)’, 属性将要修改成的数据)

三维立体绘图

使用函数:

plat3(x, y, z)

使用基本和二维相同

zlabel('z轴坐标名')

hold on: 当前轴及图像保持不刷新, 并继续接受此后绘制的图像, 多图共存

hold off: 当前轴及图像不在具备保持的性质, 新图出现时, 取消原图

​ 两者区别就是, 前者画出来的多副图可以共存, 也就是叠加存在

​ 后者在原先的幕布上画图时, 会将原先绘制的内容清除, 也就是替换图片

grid on: 打开网格线

grid off: 隐藏网格线

axis square: 将三维图像的显示模式修改一下, 看起来不那么扁

posted @   TenderFlow  阅读(349)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示