个人学习笔记_matlab基础教程
MATLAB 基础教程笔记
本笔记基于视频:
https://www.bilibili.com/video/BV13D4y1Q7RS?p=9&share_source=copy_web
0零基础入门matlab教程基础版,听懂人话就能学会!毕业设计/研究生/神经网络工具箱/机器学习/数学建模matlab
由于基本是自用的学习笔记, 可能有部分内容难以阅读, 如有错误望指正
matlab基础入门是非常不错的
基本知识
安装MATLAB时, 安装的版本意思为年份 + a/b, a 表明此版本是上半年发行的, 同理, b表示下半年
左侧是项目文件显示, 一开始打开MATLAB的时候, 程序中间只有一个命令行窗口
但是如果仅仅使用命令行, 就比较难看(并且非常非常不好使, 老师一点都没教, 平常上课的时候也是直接用命令行做演示, 我怎么感觉他有一种等到最后看笑话的感觉)
新使用的最好是脚本文件类型, 点击主页->新建->脚本
之后在里边编辑代码进行运行就行
变量规则
-
变量名区分大小写
-
变量名称长度不超过63位
-
变量名以字母开头, 可以由字母、数字和下划线组成, 但不能使用标点
-
变量名应当简洁明了, 通过变量名可以直观的看出变量所表示的物理意义
MATLAB数据类型
清空所有环境变量及其命令
clear all 清空工作区中的所有变量
clc 清空命令行区域所有内容
变量名中不能使用标点(还有人使用标点? 锤死)
数据类型
-
数字
-
字符与字符串
字符串用单引号表示
s = ‘a’
abs(s)
输出结果为97, 表示ASCII码
char(97)
表示输出ASCII码为97的字符
num2str(65)
C语言里的常用函数了(或者是C++?老久没用了)
将数字转换为字符串
length(str)
依然是常用函数, 获取字符串长度
- 矩阵
矩阵定义:
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)
表示创建一个全零矩阵
其中参数代表:
-
第一个参数10 表示矩阵有10行
-
第二个参数5 表示矩阵有5列
-
第三个参数3 表示这个矩阵是”三维”的,多少微就代表这个矩阵组中有多少个矩阵
同样, 使用函数ones可以创建全一矩阵
MATLAB中的矩阵随机函数;
rand、randi和randn的区别
- rand生成均匀分布的伪随机数. 分布在(0~1)之间
主要使用语法:
rand(m,n)
生成m行n列的均匀分布的伪随机数,
rand(m,n,’double’)
生成指定精度的均匀分布的伪随机数, 参数可以是single;
rand(RandStream, m, n)
利用指定的RandStrean(随机种子)生成伪随机数
- randn生成标准正态分布的伪随机数(均值为0, 方差为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
其中这三句的区别在于:
-
获取name这个属性, 如果name是一个数组, 也输出数组中的内容
-
获取name这个属性的(在已经确认这个属性是一个数组的情况下), 那么获取到的是一个cell类型的数据
-
获取到的是一个字符串类型的数据
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
: 将三维图像的显示模式修改一下, 看起来不那么扁
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具