学习笔记
未读什么是线性整数规划问题 整数规划问题是指在一组线性不等式约束条件下,求解一个线性目标函数的最大值或最小值的问题,且目标函数和约束条件中的变量含有整数。 如何使用 MATLAB 解决线性整数规划问题 常见的线性整数规划问题通常类似于以下形式: minZ=8x1+x2\begin{equation} \min \quad Z=8 x_{1} + x_{2} \end{equation} minZ=8x1+x2 s.t. {x2 is an integerx1+2x2≥−14−4x1−x2≤−332x1+x2≤20\begin{equation} \text { s.t. } \left\{ \begin{array}{c} x_{2} \text{ is an integer} \\ x_{1}+2x_{2} \geq -14 \\ -4x_{1}-x_{2} \leq -33 \\ 2x_{1}+x_{2} \leq 20 \end{array} \right. \end{equation} ...
学习笔记
未读什么是非线性规划问题 非线性规划问题仍是规划问题的一种,但是目标函数和约束条件不再是线性的,而是存在非线性的部分,如指数函数、对数函数、三角函数等。 如何使用 MATLAB 解决非线性规划问题 常见的非线性规划问题通常类似于以下形式: minf(x)=x12+x22+x32+8\begin{equation} \min \quad f(x)=x_{1}^2+x_{2}^2+x_{3}^2+8 \end{equation} minf(x)=x12+x22+x32+8 s.t. {x12−x2+x32≥0x1+x22+x33≤20−x1−x22+2=0x2+2x32=3x1,x2,x3≥0\begin{equation} \text { s.t. } \begin{cases} & x_{1}^2-x_{2}+x_{3}^2 \geq 0 \\ & x_{1}+x_{2}^2+x_{3}^3 \leq 20 \\ & -x_{1}-x_{2}^2+2 = 0 \\ & x_{2} ...
学习笔记
未读什么是线性规划问题 线性规划问题是指在一组线性不等式约束条件下,求解一个线性目标函数的最大值或最小值的问题。 如何使用 MATLAB 解决线性规划问题 常见的线性规划问题通常类似于以下形式: maxZ=4000x1+3000x2\begin{equation} \max \quad Z=4000 x_{1}+3000 x_{2} \end{equation} maxZ=4000x1+3000x2 s.t. {2x1+x2≤10x1+x2≤8x2≤7x1,x2≥0\begin{equation} \text { s.t. } \begin{cases} & 2 x_{1}+x_{2} \leq 10 \\ & x_{1}+x_{2} \leq 8 \\ & x_{2} \leq 7 \\ & x_{1}, x_{2} \geq 0 \end{cases} \end{equation} s.t. ⎩⎨⎧2x1+x2≤10x1+x2≤8x2≤7x1,x2 ...
学习笔记
未读分支结构 MATLAB 中的分支结构有 if-else 结构、switch 结构。 if 语句 if 语句的语法格式如下: 1234567if condition statementelseif condition statementelse statementend 其中,condition 是一个逻辑表达式,statement 是一个语句。elseif 和 else 部分是可选的。 只有 condition 为 true 时,对应分支的 statement 才会被执行。若 condition 为 false,则跳过该分支,继续执行下一个分支。所有分支都不满足 condition 时,执行 else 分支。 switch 语句 switch 语句的语法格式如下: 12345678switch expression case value1 statement case value2 statement otherwise statementend 其中,expression 是一个表达式,value1 ...
学习笔记
未读关系运算 关系运算符(例如 >、<、== 和 ~=)执行两个值之间的比较。相等或不相等比较的结果为 1 (true) 或 0(false)。 1234567>> 1 > 2ans = 0>> 1 < 2ans = 1 我们可以使用关系运算符将某个向量或矩阵与单个标量值进行比较。结果是与原始数组相同大小的逻辑数组。 1234567891011>> A = [1 2 3; 4 5 6; 7 8 9]A = 1 2 3 4 5 6 7 8 9>> A > 5ans = 0 0 0 0 1 1 1 1 1 逻辑索引 我们可以使用逻辑数组作为数组索引,在这种情况下,MATLAB 会提取索引为 true 的数组元素。 1234567>> A = [1 2 3 4 5 6 7 8 9]A = 1 2 3 4 5 ...
学习笔记
未读绘制向量图 可以使用 plot 函数在一张图上绘制两个相同长度的向量。 123x = 0:0.1:2*pi;y = sin(x);plot(x,y) plot 函数接受一个附加参数。 使用该参数,您可以通过在引号中包含不同符号的方式来指定与之对应的颜色、线型和标记样式。 1plot(x, y, "r--o") 以上命令将会绘制一条红色 (r) 虚线 (--),并使用圆圈 (o) 作为标记: 请注意,每个绘图命令都创建了一个单独的绘图。要在一张图上先后绘制两条线,请使用 hold on 命令保留之前的绘图,然后添加另一条线。 123456x = 0:0.1:2*pi;y1 = sin(x);y2 = cos(x);plot(x, y1, "r--o")hold onplot(x, y2, "b--o") 启用保留状态时,将继续在同一坐标区上绘图。要恢复默认绘图行为,即其中每个绘图都有自己的坐标区,请输入 hold off。 当您单独绘制一个向量时,MATLAB 会使用向量值作为 y 轴数据,并将 x 轴数据的范围设置为从 ...
学习笔记
未读获取函数的多个输出 size 函数可以应用于数组,以生成包含数组大小的单个输出变量。 123456789>> A = [1 2 3; 4 5 6; 7 8 9]A = 1 2 3 4 5 6 7 8 9>> s = size(A)s = 3 3 size 函数也可以生成两个输出变量。使用方括号[ ]获得多个输出。 1234567891011>> A = [1 2 3; 4 5 6; 7 8 9];>> [m, n] = size(A);>> mm = 3>> nn = 3 可以使用 max 函数确定向量的最大值及其对应的索引值。 max 函数的第一个输出为输入向量的最大值。 执行带两个输出的调用时,第二个输出为索引值。 1234567891011>> v = [1 2 3 4 5 6 7 8 9 10];>> [max_val, max_index] = max(v);>> m ...
学习笔记
未读数组与标量的计算 MATLAB 的设计让我们能够自然地处理数组。 例如,我们可以将一个标量值与数组中的所有元素相加。 1234567891011>> A = [1 2 3; 4 5 6; 7 8 9]A = 1 2 3 4 5 6 7 8 9>> A + 1ans = 2 3 4 5 6 7 8 9 10 数组与数组的计算 MATLAB 也能够处理数组之间的计算。 例如,我们可以将两个相同大小的数组相加。 1234567891011121314151617>> A = [1 2 3; 4 5 6; 7 8 9]A = 1 2 3 4 5 6 7 8 9>> B = [1 2 3; 4 5 6; 7 8 9]B = 1 2 3 4 5 6 7 8 9> ...
学习笔记
未读Pytorch 简介 什么是 Pytorch Python优先的深度学习框架,支持GPU加速和动态神经网络。 为什么使用 PyTorch 动态图机制,更加灵活 与Python紧密结合,更加方便 支持GPU加速,更加快速 支持分布式训练,更加强大 PyTorch 基础 Tensor 张量 Tensor 相当于多维的矩阵。 Tensor 的数据类型有:(32位浮点型)torch.FloatTensor,(64位浮点型)torch.DoubleTensor,(16位整型)torch.ShortTensor,(32位整型)torch.IntTensor,(64位整型)torch.LongTensor。 导入 PyTorch 1import torch 创建一个没有初始化的 5×3 矩阵 12x = torch.empty(5, 3)print(x) 创建一个随机初始化的矩阵 1234567# 均匀分布[0,1], randx = torch.rand(5, 3)print(x)# 正态分布, randnx = torch.randn(5, 3)print(x) 创建一个全0,全1,或者对 ...
学习笔记
未读介绍 海象运算符,即 := ,在 PEP 572 中被提出,并在 Python3.8 版本中发布。 海象运算符的英文原名叫Assignment Expresions,即赋值表达式。 它由一个冒号:和一个等号=组成,即:=。而它被称作walrus operator(海象运算符),是因为它长得像一只海象。 语法 海象运算符的语法格式如下: 1variable_name := expression 它的作用是将表达式的值赋值给变量,然后返回表达式的值。 而传统的赋值运算符=在赋值之后,返回的是None。 用法 海象运算符返回的是表达式的值,而不是None,因此可以用于一些需要表达式的地方。 if 语句 使用海象运算符: 12if (n := len(a)) > 10: print(f"List is too long ({n} elements, expected <= 10)") 传统写法: 123n = len(a)if n > 10: print(f"List is too long ({n ...