内存笔记内存笔记
Home
文章
分类
标签
时间线
Github
Home
文章
分类
标签
时间线
Github

Timeline

3/4/2025: [ESP32]点亮LED灯

Category: Tag:

实操步骤:

1.将15号pin连接到指定的LED灯的针脚 (硬件准备)

2.复制basic中的blink示例的代码

3.通过宏定义定下输出的端口 #define LED_BUILTIN 15

4.选择开发板:工具->开发板->ESP32 DEV Module

5.再选择对应的端口

6.上传

示例代码

#define LED_BUILTIN 15

// the setup function runs once when you press reset or power the board
void setup() {
  // initialize digital pin LED_BUILTIN as an output.
  pinMode(LED_BUILTIN, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
  digitalWrite(LED_BUILTIN, HIGH);  // turn the LED on (HIGH is the voltage level)
  delay(1000);                      // wait for a second
  digitalWrite(LED_BUILTIN, LOW);   // turn the LED off by making the voltage LOW
  delay(1000);                      // wait for a second
}
2/24/2025: [数据结构]顺序表

Category: Tag:

在顺序表中,每一个元素的内存空间是连续的,可以通过下标与首地址直接计算出对应元素的地址。类似于数组,因此在线性表中,顺序表的效率是极高的。

定义

typedef struct{
	ContentType *content;
	int length;
	
}SList;
2/18/2025: [线性代数]线性方程组解的判定与性质

Category: Tag:

线性方程组的初等变换(高斯消元法解方程组)[对应增广系数矩阵]

1.交换两方程位置 [交换两行]

2.在方程两端乘以数k≠0 [某行乘k]

3.某方程两端k倍加到另一方程上 [某行的k倍加到另一行上]

解方程组,对增广矩阵和系数矩阵 只做初等行变换


以无解情况为例:

明显的,增广矩阵的秩大于系数矩阵的秩

当增广矩阵的秩大于系数矩阵时,化为阶梯形时,会出现如上述例子最后一行的情形,因此无解


总的来说,对于任意线性方程组,解的判定方法如下:

2/17/2025: [线性代数]向量组的秩

Category: Tag:

定义

向量组的秩: 向量组的极大线性无关组的向量个数

列秩: 矩阵的列向量组的秩

行秩: 矩阵的行向量组的秩

定理

矩阵的秩等于列秩等于行秩(三秩相等)


结论

1.秩是唯一的,等于极大线性无关组中的向量个数

2.某个向量组线性无关 等价于 秩等于向量个数

某个向量组线性相关 等价于 秩小于向量个数

3.若(I)可以由(II)线性表示,则 r(I)<=r(II)

2/17/2025: [线性代数]极大线性无关组

Category: Tag:

定义

若某个向量组的部分组满足线性无关,且该向量组中的任一个向量都可以用该部分组线性表示,则称该部分组为原向量组的一个极大线性无关组

关键

1.线性无关 2.再多来一个就线性相关了

结论

1.零向量组没有线性无关组

2.线性无关的向量组的最大线性无关组即为它本身

3.向量组的极大线性无关组可能是不唯一的

4.向量组和它任一极大线性无关组等价

5.同一向量组的两个极大线性无关组等价,所含向量个数相等

2/17/2025: [线性代数]线性方程组的表示法

Category: Tag:

以一个线性方程组为例


其可使用矩阵方程形式表示

Ax = b

其中 A 为系数矩阵,x为未知数向量,b为常数项向量

定义增广矩阵


用向量表示线性方程组

2/16/2025: [线性代数]向量组的线性相关

Category: Tag:

概念

线性表示: 若一个向量可以由一个向量组的各向量通过的数乘的和表示,则称这个向量是这个向量组的线性表示

线性相关: 若一个向量组线性表示为零向量时,系数不全为零,则称这个线性组是线性相关的。

ps:若向量组只包含一个向量时,仅有该向量为零向量才能说线性相关


线性组合和线性表示的结论

1.零向量是任意向量组的线性组合

2.向量组中的任意一个向量均可用本向量组线性表示(该向量系数取1,其他取0)

3.任一n维向量α,都可由n维基本单位向量线性表示,且表示法唯一

2/15/2025: [线性代数]向量的运算

Category: Tag:

向量相关的概念

1.零向量:所有分量(向量中的每个元素)全为零的向量

2.负向量:每个分量取相反数得到的向量

3.向量的转置:行向量和列向量的互换

向量的运算规律

α + β = β + α (交换律)

(α + β) + γ = α + (β + γ) (结合律)

α + O = O + α = α

α + (-α) = O

(kl)α = k(lα) = l(kα) (k与l都为常数)

2/14/2025: [线性代数]矩阵的分块

Category: Tag:

对于行数和列数大的矩阵,常常在A的行间作水平线,或列间做铅垂线把大矩阵分成小矩阵是分块法,每个小矩阵为A的子块,以子块为元素的矩阵称为分块矩阵。

运算规则

(1)和数乘相同

(2)一定要是相同形状的矩阵,并且要采取相同分块法

(3)A与B的形状符合乘法规则,并且A列的分法和B行的分法相同

(4)每个子块都要求转置,而且整体还要转置


常用分块形式及其应用

分块对角矩阵

2/14/2025: [线性代数]矩阵的初等变换

Category: Tag:

初等变换的定义

1.对调任意两行row(列column),记作rij cij

2.用非0常数a乘以矩阵某行(列)的所有元素,记作ri(a) ci(a)

3.将矩阵中第i行(列)的k倍加到j行的对应元素上,记作rij(k) cij(k)

若矩阵A经过有限次初等变换成矩阵B,就称A与B等价,记作A~B

矩阵等价的性质

(1)反身性 A~A (自己和自己等价)

(2)对称性 若 A~B 则 B~A

2/14/2025: [线性代数]矩阵的秩

Category: Tag:

k阶子式的定义

在矩阵A中任取k行k列(指数量而不是index),位于这些行列交叉处的k2个元素,不改变他们在A中的位置次序而得到的k阶行列式,称k阶子式

秩

矩阵A中有一个非零的r阶子式D,且所以的r+1阶子式(若存在)全等于0,那么D称为矩阵A的一个最高阶非零子式,r称为A的秩(非0子式的最高阶数)

当且仅当矩阵的秩等于行数和列数的最小值时,称为满秩阵(若为方阵则行列式不为0),反之为降秩阵

2/14/2025: [线性代数]矩阵的转置

Category: Tag:

矩阵的转置就是把原本的行变成列,原本的列变成行

矩阵转置的运算性质

1.(AT)T = A

2.(A+B)T = AT+BT

3.(aA)T = aAT

4.(AB)T = BTAT (转置提出来要颠倒顺序)


对称矩阵和反对称矩阵

AT = A即为对称矩阵(主对角元任意)

AT = -A即为反对称矩阵(主对角元为0)

(对称矩阵和反对称矩阵都一定是方阵)

对称矩阵的性质

2/14/2025: [线性代数]行阶梯形矩阵

Category: Tag:

定义

1.第(k+1)行的首个非零元前的零元个数大于第k行这种零元个数(不能等于,避免"一次下两级")

2.若某行没有非零元,则其下所有行的元素全是零

若行阶梯形矩阵的非0行的首非零元均为1,且这些首非零元所在列的其他元素全是0,则为行最简形矩阵


矩阵通过行变换可以变换为行阶梯形矩阵甚至行简化阶梯形矩阵

变换后行阶梯形并不唯一,但行简化阶梯形矩阵是唯一的


计算方法

通过初等行变换,逐列变形成目标样式(尽量保持顺序,避免计算混乱)

2/14/2025: [线性代数]逆矩阵

Category: Tag:

·有可逆性的矩阵一定是方阵,且AA-1 = I(I为单位阵)

·非方阵不能讨论可逆性,即既不是可逆也不是不可逆。

·在使用A-1之前一定要确保可逆

计算方法

1.伴随矩阵法(不常用,计算量大)

A-1 = A*/|A|

2.初等行变换法

原理:根据初等行变换可以等于用初等矩阵左乘来代替从而证明


性质

1.若一个矩阵可逆则其逆矩阵唯一

2.若某个矩阵可逆,则其可交换(由伴随矩阵法求逆矩阵,|A|≠0时才能有逆矩阵) 推论:当A与B为n阶方阵时,只要满足AB=I,即可推出A可逆与可交换

2/13/2025: [线性代数]伴随矩阵

Category: Tag:

仅有方阵才有伴随矩阵

定义计算

将原矩阵的每行的元素求代数余子式,再填回列对应的位置(按行求,按列放),以A*表示

性质

1.伴随矩阵和原矩阵可交换 A*A=AA*=|A|I

2.对任意方阵A,有|A*|=|A|n-1

3.(AT)* = (A*)T (求伴随矩阵和求转置可以交换顺序)

4.若A为二阶方阵,则其伴随矩阵:主对角线交换,副对角线变号

(未完工?)

2/13/2025: [线性代数]矩阵的乘法

Category: Tag:

矩阵做乘法的基本要点

1.左矩阵的列数等于右矩阵的行数,结果的形状为行数和左矩阵相同列数和右矩阵相同(中间相等,目标形状同两边)(矩阵形状推导)

2.矩阵乘法一般不能交换,除非它可交换(即一般情况下,AB≠BA)

3.AB=O不能得出A=O或B=O,AB=AC不能说明B=C(不满足消去律)

4.基本计算方法:遍历左矩阵的每行,去和右矩阵的每列的各个元素相乘求和,作为目标矩阵的一个元素

5.对角矩阵可以直接主对角线每个元素相乘得到目标矩阵

矩阵乘法的运算规律

2/13/2025: [线性代数]简单的行列式计算

Category: Tag:

叠甲:自己当笔记用的,觉得乱的话别喷,有错的话请指正

1.通过定义计算

n阶行列式的值由多个项之和组成,取自所有的不同行不同列的n个元素,每个项的符号由以下规则确定

将元素的行标按自然顺序排列,列表的逆序数的奇偶性决定其正负(偶正奇负)

一般来说,二阶行列式直接计算,三阶行列式可用定义也可用其他办法化简


2.行列式按一行(列)展开

为了计算方便,一般选定0最多的行或列展开,大量元素可以通过乘0而消失

代数余子式

2/12/2025: [线性代数]行列式的性质

Category: Tag:

叠甲:自己当笔记用的,觉得乱的话别喷,有错的话请指正


1.方阵与其转置的行列式相等

2.行列式有两行(或列)相同,则行列式等于0 (推广:两行成比例则为0)

3.若某行元素是两组数的和,那么这个行列式就等于两个行列式的和,这两个行列式的其他部分和原来的行列式相同

(等号两边对第i行展开,再使用乘法分配律即可证明)

4.若将初等行(列)变换用于n阶行列式,则有:

(1) 方阵A中某行(列)乘以a得到B,则|B|=a|A|(有几个公因子,就提几次)

(2) 方阵A中某行(列)的k倍加到另一行(列)得到B,则|B|=|A|

1/23/2025: [PyTorch]使用神经网络处理线性回归问题

Category: Tag:

线性回归应该是神经网络所能处理的最简单的问题,通过此问题我们可以了解神经网络的基本流程。

1.准备训练数据集

生成一堆直线上取的散点,并且用随机数给它产生噪声

import randompath = r'D:\python\torch_study\datasets\liner.csv'with open(path,'w') as f:    for i in range(0,1000,1):        x = i*0.1        y = (random.random()-0.5)*0.1 + 2*x        f.write('%f,%.4f\n' % (x,y))
1/15/2025: [Python期末拯救者]在期末考试中matplotlib的使用

Category: Tag:

众所周知,matplotlib.pyplot是Python中最常用的绘图库之一,它提供了丰富的接口来绘制各种类型的图表。也是考点之一(我只能说海龟画图是有点搞笑的), 所以我们从一个最简单的图像(y=x^2)开始说这个库的使用

1.最简单的绘图

导包(一般情况下用上numpy辅助会使计算更加简便)

import matplotlib.pyplot as plt
import numpy as np
1/10/2025: [Python期末拯救者]针对期末上机考试中的一些技巧

Category: Tag:

关于pycharm的技巧

1.解释器的配置

在File选项卡中可以打开设置,如果出现了奇奇怪怪的运行环境报错可以试着看看这里解释器有没有问题

2.忽略大小写

很多时候写程序时单词的大小写错误,有时就会让pycharm无法给出正确的代码提示,通过更改一个设置就能忽略大小写。(最终写出来的程序还是要区别大小写,只是代码提示时集成开发环境会忽略大小写来进行检索)

将这个取消勾选就能忽略大小写

3.文档的查找

我向来是佩服那种学习程序设计时纯靠死记硬背的,记忆力惊人啊。但是,把大脑的实力用在死记硬背上属实是浪费资源了,写程序从始至终都不是坐牢。

12/31/2024: [Python期末拯救者]python期末考试中的html分析题目解法

Category: Tag:

声明:这个是写给一点都不会的人看的,懂哥勿喷

示例题目:

从 教务处信息网.html 文件中获取文章标题与链接 并且存入result.csv

需要处理的标签格式如下

<a(一个及以上空格)href="(链接)"(一个及以上空格)target="_blank"(一个及以上空格)title="(标题)">

首先我们对这个题目进行分析,要从文件中提取出上述信息,必然会用到正则表达式对整个html文件进行匹配,然后将匹配结果写入csv文件

所以,我们整个任务的重点就是正则表达式的写法,以及对csv文件的写入

12/27/2024: [Python期末拯救者]关于期末作业中网络爬虫技术的应用

Category: Tag:

网络爬虫的核心就是模拟浏览器,从服务器上请求数据,因此在进行网络爬虫的设计之前,我们需要搞清楚你所需要的数据从何而来,搞清楚数据是通过何种方式传输到浏览器上的。

目前来看,一个网站应用的架构分为3个部分:前端、后端、数据库。前端就是运行在我们浏览器上的html,css,js等前端程序,而网络爬虫就是通过模拟前端程序的运行逻辑来实现数据的获取。而我们这个获取数据的方式取决于后端程序通过什么方式发送数据,目前来看,大致存在两种方式进行数据的传输:一种是同步传输(直接把数据写在网页的html文件上发到浏览器上),另一种是异步传输(通过xhr等方式将某些数据交换格式(一般为json)发送到浏览器,并在js程序的处理后渲染到网页上)。网络爬虫的核心就在此。

12/26/2024: [Python期末拯救者]一个操作简单但不太完整的数据库框架

Category: Tag:

声明:本文旨在多快好省地帮助无基础但是又要应付期末作业的学生,大佬勿喷!

在我们python程序设计的期末作业中,要求使用sqllite数据库,但是关系型数据库的操作对于新手来说却是一件较为困难的事情,于是就有了这个勉强能对付期末作业的数据库框架

1、关系型数据库的结构

对于关系型数据库来说,顶层的结构是数据库(可以理解为excel表格的工作簿),接下来是数据表(可以理解为excel表格的工作表),数据表中又包含各个字段(相当于表格的列,但是每个字段都有确定的数据类型),每个字段一组确定的值称为记录(相当于表格的行)。

所以,数据库的操作就是一个创建表,然后在表中进行增删改查的过程。

12/16/2024: 使用WordPress搭建一个博客

Category: Tag:

设置环境

1.更新环境

sudo apt update

2.安装Apache2

sudo apt install apache2

启动Apache并设置开机自启:

sudo systemctl start apache2 sudo systemctl enable apache2

3.安装MySQL

sudo apt install mysql-server sudo mysql_secure_installation

蜀ICP备2024116061号-1 川公网安备51140202000488号