31线性变换及其矩阵

2023-05-16

一、线性变换的概念

线性变换是数学中一种特殊的映射,它具有将向量空间中的元素转换到另一向量空间元素的功能,同时也保持了变换前后向量的线性不变的性质。线性变换的数学表达式如下:
T ( c u + d v ) = c T ( u ) + d T ( v ) (1) T(c\boldsymbol{u} + d\boldsymbol{v}) = cT(\boldsymbol{u}) + dT(\boldsymbol{v})\tag{1} T(cu+dv)=cT(u)+dT(v)(1)
其中, u \boldsymbol{u} u v \boldsymbol{v} v 是向量空间 V V V 中的任意向量,而 a a a b b b 分别是与它们相关的标量。接下来,我们将利用公式 ( 1 ) (1) (1)进行线性变换的检验。 T ( x ) T(\boldsymbol{x}) T(x)表示向量 x \boldsymbol{x} x变换后的新向量。

接下来,我们将对映射(变换)进行线性判别,基本思路是:

  1. 定义变换。明确给定的变换是如何改变待映射向量的。
  2. 验证加法性。 T ( u + v ) = T ( u ) + T ( v ) T(\boldsymbol{u} + \boldsymbol{v}) = T(\boldsymbol{u}) + T(\boldsymbol{v}) T(u+v)=T(u)+T(v)
  3. 验证(标量)乘法性。 T ( α u ) = α T ( u ) T(\alpha \boldsymbol{u}) = \alpha T(\boldsymbol{u}) T(αu)=αT(u)

下判断:如果同时满足2和3,那么我们称这个变换为线性变换,反之则为非线性变换。

例子1:“平移变换(Shift transformation)”是否为线性变换?

答:平移变换不是一个线性变换。理由如下:

  • 平移变换是指将待映射的向量执行固定的向量加法的映射(明确变换定义)
  • 计算 T ( u + v ) = T ( u ) + T ( v ) T(\boldsymbol{u} + \boldsymbol{v}) = T(\boldsymbol{u}) + T(\boldsymbol{v}) T(u+v)=T(u)+T(v)
  • 再计算 T ( α u ) = α T ( u ) T(\alpha \boldsymbol{u}) = \alpha T(\boldsymbol{u}) T(αu)=αT(u)

因为 ( 1 ) (1) (1) 的左边:
T ( c v + d w ) = c v + d w + u 0 T(c\bold v+d\bold w)=c\bold v+d\bold w+\bold u_0 T(cv+dw)=cv+dw+u0
右边:
T ( c v ) + T ( d w ) = c w + d v + 2 u 0 T(c\bold v)+T(d\bold w)=c\bold w+d\bold v+2\bold u_0 T(cv)+T(dw)=cw+dv+2u0
也就是:
T ( c v + d w ) ≠ T ( c v ) + T ( d w ) T(c\bold v+d\bold w)\ne T(c\bold v)+T(d\bold w) T(cv+dw)=T(cv)+T(dw)
当然如果 u 0 = 0 \bold u_0=\bold 0 u0=0,也是一个线性变换,这种变换叫做单位变换(Identity transformation)。

例子2:“左乘矩阵”是否为线性变换?

答:左乘矩阵是一个线性变换。左乘矩阵表示对一个向量执行左乘矩阵的映射。
T ( c v + d w ) = c A v + d A w = T ( c v + d w ) T(c\bold v+d\bold w)=cA\bold v+dA\bold w=T(c\bold v+d\bold w) T(cv+dw)=cAv+dAw=T(cv+dw)

例子3:仿射变换(Affine transformation)是否为线性变换?

答:仿射变换不是一个线性变换。仿射变换是线性变换与平移变换的组合,他首先对原向量执行一个线性变换,然后在进行例子1的平移变换。
T ( c v + d w ) = A ( c v + d w ) + u 0 (2) T(c\bold v+d\bold w)=A(c\bold v +d\bold w)+\bold u_0\tag{2} T(cv+dw)=A(cv+dw)+u0(2)
T ( c v ) + T ( d w ) = A c v + A d w (3) T(c\bold v)+T(d\bold w)=Ac\bold v+Ad\bold w\tag{3} T(cv)+T(dw)=Acv+Adw(3)
显然, ( 2 ) ( 3 ) (2)(3) (2)(3)不相等,除非这个线性平移量 u 0 = 0 \bold u_0=0 u0=0

二、更多例子

2.1 点乘变换(Dot product transformation)

输入向量为 v = [ v 1 v 2 v 3 ] \bold v=\begin{bmatrix}v_1\\v_2\\v_3\end{bmatrix} v= v1v2v3 ,假设这个点乘变换向量为 a = [ 1 3 4 ] \bold a=\begin{bmatrix}1\\3\\4\end{bmatrix} a= 134

它是一个线性变换。假设输入向量是 v = ( v 1 , v 2 , v 3 ) \bold v=(v_1,v_2,v_3) v=(v1,v2,v3)。可以看出输入向量是一个属于 R 3 R^3 R3 空间,但是其结果是一个数,也就是 R 1 R^1 R1 空间,它相当于左乘了一个矩阵 A = [ 1 , 3 , 4 ] A=[1,3,4] A=[1,3,4],前面讨论过,左乘一个矩阵是一个线性变换。

由上面的讨论可知:线性变换前后向量所处的向量可以属于不同维度

2.2 变换为取模 T ( v ) = ∣ ∣ v ∣ ∣ T(\bold v)=||v|| T(v)=∣∣v∣∣

它不是一个线性变换。因为既不满足 ∣ ∣ v + w ∣ ∣ = ∣ ∣ v ∣ ∣ + ∣ ∣ w ∣ ∣ ||v+w||=||v||+||w|| ∣∣v+w∣∣=∣∣v∣∣+∣∣w∣∣ ,也不满足 ∣ ∣ − v ∣ ∣ = − ∣ ∣ v ∣ ∣ ||-v||= -||v|| ∣∣v∣∣=∣∣v∣∣

2.3 变换为 T ( v ) T(v) T(v) 每个向量都旋转 30 30 30

旋转可以用一个矩阵来表示,属于左乘一个矩阵的情况,故为线性变换。

2.4 线到线,三角到三角的线性变换在图形上的特点

如果我们把这些向量用图形表示出来,比如在直线上:
在这里插入图片描述

上图,向量 u = 0.5 ( v + w ) \bold u=0.5(\bold v+\bold w) u=0.5(v+w),如果进行了线性变换,那么变换前后各点的距离相等关系是不变的。同理对于 R 2 R^2 R2空间的三个向量, 重心公式为: u = 1 / 3 ( v 1 + v 2 + v 3 ) \bold u=1/3(\bold v_1+\bold v_2+\bold v_3) u=1/3(v1+v2+v3) 经过线性变换后距离相等公式不变,且重心公式 1 / 3 ( T ( v 1 ) + T ( v 2 ) + T ( v 3 ) ) 1/3(T(\bold v_1)+T(\bold v_2)+T(\bold v_3)) 1/3(T(v1)+T(v2)+T(v3))

2.5 T: R 3 → R 2 R^3\rightarrow R^2 R3R2

T ( v ) = A v (3) T(v)=Av\tag{3} T(v)=Av(3)
输入向量 v ∈ R 3 v\in R^3 vR3,也就是说矩阵 A A A 必须为一个 2 × 3 2\times3 2×3 的矩阵,输出向量是一个在 R 2 R^2 R2的矩阵。事实上,所有线性变换都可以用一个矩阵来表示。

三、线性变换的矩阵表达

接下来的内容是:如何利用一个线性变换矩阵完成对一个向量进行线性变换。

已知向量空间中的基便可以用数字序列将在其上的向量表示出来。有了基这个概念,我们就可以将向量划分属于在某个维度的空间上。

向量名称空间名称空间维数
v v v 变换前的向量 V V V R n R^{n} Rn
T ( v ) T(v) T(v) or w w w 变换后的向量 W W W R m R^{m} Rm

我们的目标:找到线性变换对应的找到一个矩阵 A A A ,使得输入向量都能很轻松的通过左乘 A A A 获得到输出向量。也就是
w = A v (4) w=Av\tag{4} w=Av(4)
根据矩阵运算法则,矩阵 A A A 的维度必须为 m × n m\times n m×n,对输入输出空间的基选择是任意的,这就意味着我们的“线性转换”矩阵是与输入空间和输出空间相关的。假设输入向量 v v v 所处向量空间的基有 n n n,那么有:
v = c 1 v 1 + c 2 v 2 + ⋯ + c n v n (5) v=c_1v_1+c_2v_2+\cdots+c_nv_n\tag{5} v=c1v1+c2v2++cnvn(5)
因为是线性变换,所以有:
T ( v ) = c 1 T ( v 1 ) + c 2 T ( v 2 ) + ⋯ + c n T ( v n ) (6) T(v)=c_1T(v_1)+c_2T(v_2)+\cdots+c_nT(v_n)\tag{6} T(v)=c1T(v1)+c2T(v2)++cnT(vn)(6)
写成矩阵形式,方便我们得到线性转换矩阵 A A A
T ( v ) = w = [ T ( v 1 ) T ( v 2 ) ⋯ T ( v n ) ] [ c 1 c 2 ⋮ c n ] (7) T(v)=w=\begin{bmatrix}T(v_1)&T(v_2)&\cdots&T(v_n)\end{bmatrix}\begin{bmatrix}c_1\\c_2\\\vdots c_n\end{bmatrix}\tag{7} T(v)=w=[T(v1)T(v2)T(vn)] c1c2cn (7)
这个矩阵就是我们需要的转换矩阵:
A = [ T ( v 1 ) T ( v 2 ) ⋯ T ( v n ) ] (8) A=\begin{bmatrix}T(v_1)&T(v_2)&\cdots&T(v_n)\end{bmatrix}\tag{8} A=[T(v1)T(v2)T(vn)](8)
其中 T ( v i ) ( i = 0 , 1 , ⋯ n ) T(v_i)\quad (i=0,1,\cdots n) T(vi)(i=0,1,n) 不就是对输入向量基每一个进行的线性变换吗?显然的它的列与输入向量的维度有关,行与什么有关呢?当然是和输出向量基有关。也就是说,我们只要知道输入基的所有线性变换在新输出基下的表达,那么我们就可以完全确定这个线性变换。

例子1:假设已知输入基和输出基之间的线性映射结果,比如:
v 1 = [ 1 0 ] v 2 = [ 0 1 ] v_1=\begin{bmatrix}1\\0\end{bmatrix} \quad v_2=\begin{bmatrix}0\\1\end{bmatrix} v1=[10]v2=[01]
经过新的变换后的结果为: T ( v 1 ) = [ 2 3 4 ] T ( v 2 ) = [ 5 5 5 ] T(v_1)=\begin{bmatrix}2\\3\\4\end{bmatrix} \quad T(v_2)=\begin{bmatrix}5\\5\\5\end{bmatrix} T(v1)= 234 T(v2)= 555
对应的转换矩阵 A A A 应为:
A = [ T ( v 1 ) T ( v 2 ) ] = [ 2 5 3 5 4 5 ] A=\begin{bmatrix}T(v_1)&T(v_2)\end{bmatrix}=\begin{bmatrix}2&5\\3&5\\4&5\end{bmatrix} A=[T(v1)T(v2)]= 234555
给定变换前的向量 x = [ 1 1 ] x=\begin{bmatrix}1\\1\end{bmatrix} x=[11],线性变换的结果就可以通过计算得到线性变换结果: y = A x = [ 7 8 9 ] y=Ax=\begin{bmatrix}7\\8\\9\end{bmatrix} y=Ax= 789

上面这个例子是直接给出输入基在输出空间的表示,很多时候我们可能只知道对应的线性关系,和在同一坐标系下的输入基和输出基的表示。那么我们应该如何求得这个矩阵呢?

例子2 已知变换前向量空间为 V = R 2 \bold V=\bold R^2 V=R2,线性变换后的向量空间为 W = R 2 \bold W= R^2 W=R2,这个变换是 T ( v ) = v T(v)=v T(v)=v。假设变换前后向量空间的基都处于同一坐标系,那么:
V = [ v 1 v 2 ] = [ 3 6 3 8 ] W = [ w 1 w 2 ] = [ 3 0 1 2 ] V=\begin{bmatrix}v_1&v_2\end{bmatrix}=\begin{bmatrix}3&6\\3&8\end{bmatrix} \quad W=\begin{bmatrix}w_1&w_2\end{bmatrix}=\begin{bmatrix}3&0\\1&2\end{bmatrix} V=[v1v2]=[3368]W=[w1w2]=[3102]
因为 T ( v ) = v T(v)=v T(v)=v 是一个单位变换(Identity transformation),所以:
v 1 = 1 w 1 + 1 w 2 v 2 = 2 w 1 + 3 w 2 (9) v_1=1w_1+1w_2\\v_2=2w_1+3w_2\tag{9} v1=1w1+1w2v2=2w1+3w2(9)
注意上面成立的条件是线性变换是 T ( v ) = v T(v)=v T(v)=v 。,这样我们就知道变换后在新向量空间中的表达了:
T ( v 1 ) = [ 1 1 ] T ( v 2 ) = [ 2 3 ] T(v_1)=\begin{bmatrix}1\\1\end{bmatrix}\quad T(v_2)=\begin{bmatrix}2\\3\end{bmatrix} T(v1)=[11]T(v2)=[23]
所需要的矩阵 A = [ 1 2 1 3 ] A=\begin{bmatrix}1&2\\1&3\end{bmatrix} A=[1123]。如果换成矩阵形式求解这个矩阵,那应该是:
W A = V A = W − 1 V WA= V\quad A=W^{-1}V WA=VA=W1V
这就告诉我们,如果我们要求线性变换矩阵,那么只需要将输出向量的基矩阵的逆 W − 1 W^{-1} W1并且右乘输入基矩阵 V V V

OK!上面求得矩阵 A A A 的关键找到了等式 ( 9 ) (9) (9),一般地[1],对于 T ( v ) = v T(v)=v T(v)=v
u = c 1 v 1 + ⋯ + c n v n u = d 1 w 1 + ⋯ + d n w n (10) u=c_1v_1+\cdots+c_nv_n\\ u=d_1w_1+\cdots+d_nw_n\tag{10} u=c1v1++cnvnu=d1w1++dnwn(10)
用矩阵表达则为:
[ T ( v 1 ) T ( v 2 ) ⋯ T ( v n ) ] c = [ w 1 w 2 ⋯ w m ] d V c = W d \begin{aligned} \begin{bmatrix}T(v_1)&T(v_2)&\cdots&T(v_n)\end{bmatrix}c&=\begin{bmatrix}w_1&w_2\cdots&w_m\end{bmatrix}d\\ Vc&=Wd \end{aligned} [T(v1)T(v2)T(vn)]cVc=[w1w2wm]d=Wd
线性变换后的向量为:
d = W − 1 V c d= W^{-1}Vc d=W1Vc
如果输入向量基是单位正交基,那么有:
d = W − 1 c d=W^{-1}c d=W1c

例子3:求多项式微分: v = c 1 + c 2 x + c 3 x 2 + c 4 x 3 v=c_1+c_2x+c_3x^2+c_4x^3 v=c1+c2x+c3x2+c4x3 的线性转换矩阵 A A A

这次的例子不再是 T ( v ) = v T(v)=v T(v)=v 这种单位线性变换,而微分变换,微分变换也是一种线性变换。可以看出变换前的基由四个部分组成,分别是 : 1 , x , x 2 , x 3 1,x,x^2,x^3 1,x,x2,x3 ,输出基是: 1 , x , x 2 1,x,x^2 1,x,x2。分别输出基对他们进行线性变换 T ( v ) = d v d x T(v)=\frac{dv}{dx} T(v)=dxdv,结果用输出基表示。如第一个输入基是 1 1 1,那么:
1 ′ = 0 = 0 × 1 + 0 × x + 0 × x 2 x ′ = 1 = 1 × 1 + 0 × x + 0 × x 2 ( x 2 ) ′ = 2 x = 0 × 1 + 2 × x + 0 × x 2 ( x 3 ) ′ = 3 x 2 = 0 × 1 + 0 × x + 3 × x 2 \begin{aligned} 1'&=0&=0\times1+0\times x+0\times x^2\\ x'&=1&=1\times1+0\times x+0\times x^2\\ (x^2)'&=2x&=0\times1+2\times x+0\times x^2\\ (x^3)'&=3x^2&=0\times1+0\times x+3\times x^2 \end{aligned} 1x(x2)(x3)=0=1=2x=3x2=0×1+0×x+0×x2=1×1+0×x+0×x2=0×1+2×x+0×x2=0×1+0×x+3×x2
微分矩阵 A A A 可以写成:
A = [ 0 1 0 0 0 0 2 0 0 0 0 3 ] A=\begin{bmatrix}0&1&0&0\\0&0&2&0\\0&0&0&3\end{bmatrix} A= 000100020003


如果线性变换不是单位变换,比如说 T ( v ) = 3 v T(v)=3v T(v)=3v,应该对其做一些调整:
u = c 1 v 1 + ⋯ + c n v n 3 u = d 1 w 1 + ⋯ + d n w n u=c_1v_1+\cdots+c_nv_n\\ 3u=d_1w_1+\cdots+d_nw_n u=c1v1++cnvn3u=d1w1++dnwn

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

31线性变换及其矩阵 的相关文章

  • C# HttpClient Digest 摘要认证 Cookie设置

    C HttpClient Digest 摘要认证 Cookie设置 1 创建凭证信息集 2 创建HttpClientHandler 3 创建HttpClient 4 发生请求 span class token comment 创建凭证信息集
  • MongoDB 批量操作(bulkWrite)

    一 概述 mongodb 3 2 版中的新版本提供了db collection bulkWrite 方法提供了执行批量插入 更新和删除操作的能力 mongodb 还支持批量插入 db collection insertMany 1 1 语法
  • Linux动态库的编译与使用(两种方式:链接进可执行程序、动态加载)

    第一步 xff1a 编写Linux程序库 文件1 动态库接口文件 span class token comment 动态库接口文件getmaxlen h span span class token macro property span c
  • ES 索引文档,按_id查找、更新、删除文档

    一 索引 xff08 新建 xff09 文档 通过使用 index API xff0c 文档可以被 索引 存储和使文档可被搜索 但是首先 xff0c 我们要确定文档的位置 正如我们刚刚讨论的 xff0c 一个文档的 index type 和
  • ES排序

    排序 为了按照相关性来排序 xff0c 需要将相关性表示为一个数值 在 Elasticsearch 中 xff0c 相关性得分 由一个浮点数进行表示 xff0c 并在搜索结果中通过 score 参数返回 xff0c 默认排序是 score
  • ES基于completion suggest实现搜索提示

    Term Suggester xff0c 基于编辑距离 xff0c 对analyze过的单个term去提供建议 xff0c 并不会考虑多个term 词组之间的关系 quert gt queryPhrase Suggester xff0c 在
  • 时间间隔宏计算

    对结果按时间间隔分桶 span class token macro property span class token directive keyword define span TIME INTERVAL a b a lt lt 32 4
  • 容器环境下IP跨网闸映射kafka部署

    一 listeners 和 advertised listeners 在公司内网部署 kafka 集群只需要用到 listeners xff0c 内外网需要作区分时才需要用到advertised listeners listeners 学名
  • C/C++ 中头文件相互包含引发的问题(was not declared in this scope)

    问题引入 最近遇到一个问题 xff0c 重构的代码编译报定义的某个宏was not declared in this scope xff0c 但是明明已经引入了包含此宏的头文件 问题分析 转载内容 我把问题脱离于项目简单描述一下 xff1a
  • 字符的全排列、字符的组合

    一 字符的全排列 题目描述 输入一个字符串 按字典序打印出该字符串中字符的所有排列 例如输入字符串abc 则打印出由字符a b c所能排列出来的所有字符串abc acb bac bca cab和cba 输入描述 输入一个字符串 长度不超过9
  • HTTP带用户名和密码请求

    import java io IOException import org apache commons codec binary Base64 import com cn mid system urls UrlUtils import o
  • n*m的格子中正方形个数和长方形个数

    问题描述 1 xff0e 设有一个nm方格的棋盘 xff08 1 m n 100 xff09 求出该棋盘中包含多少个正方形 多少个长方形 xff08 不包括正方形 xff09 例如 xff1a 当n 61 2 xff0c m 61 3时 正
  • Linux数字权限

    linux系统文件夹 从左至右 xff0c 第一位数字代表文件所有者的权限 xff1b 第二位数字代表同组用户的权限 xff1b 第三位数字代表其他用户的权限 而具体的权限是由数字来表示的 xff1a 读取的权限等于4 xff0c 用r表示
  • 八大排序算法C语言实现

    1 插入排序 1 1 直接插入排序 基本原理 xff1a 将第n个数插入已经排序好的 xff0c 长度为n 1的序列中 从n 1长度的序列中查找出待插入的元素应该插入的位置 xff1b 给插入元素腾出空间 操作方法 xff1a 从第2个数开
  • CLion下的gtest测试

    在mac环境中 xff0c 使用CLion编译的简单gtest程序 一 下载gtest源码 加入工程中 xff1a 二 编写CMakeList txt 文件 在文件中添加头文件和链接库文件 xff0c 并将链接库文件与目标文件进行链接 sp
  • python中json与dict的互相转换(编码与解码)及其简单实现

    在json模块中 将json转换为dict数据的方法有 xff1a load loads xff08 xff09 其中 xff0c load 方法从文件中提取数据进行转换 将dict转换为json数据的方法有 xff1a dump dump
  • gtest中ASSERT与EXPECT断言的区别

    参考资料查找到ASSERT断言与EXPECT断言的区别 xff1a ASSERT 系列的断言 xff0c 当检查点失败时 xff0c 退出当前函数 xff08 注意 xff1a 并非退出当前案例 xff09 EXPECT 系列的断言 xff
  • gtest参数化

    步骤 xff1a 1 创建一个类 xff0c 继承testing TestWithParam xff0c T是你需要参数化的参数类型 xff0c 比如参数类型为int 2 使用新宏TEST P替代TEST 在TEST P宏里 xff0c 可
  • gtest中字符串比较是否相等

    1 EXPECT EQ val1 xff0c val2 xff09 class StringCmpTest span class token punctuation span public testing span class token
  • 白盒测试——逻辑覆盖

    白盒测试中的逻辑覆盖有以下六种方法 xff1a 1 语句覆盖 xff1a 每个可执行语句至少被执行一次 2 判定覆盖 xff1a 每个判定的每个分支都至少执行一次 3 条件覆盖 xff1a 判定式中每个条件的每个分支至少执行一次 4 判定条

随机推荐

  • 计算机网络面试题整理

    面试很多时候被问到的问题 xff0c 感觉都没答好 xff0c 统一整理一下 更新 8 23 GET和POST的区别 xff1f GET和POST方法没有实质上区别 xff0c 只是报文格式不同 GET和POST是HTTP协议中的两种请求方
  • 【C语言】c/c++中常用的预定义宏:__LINE__, __func__, __FILE__, __DATE__, __TIME__

    ANSI C标准中的预定义宏 xff08 也是常用的 xff09 xff1a LINE xff1a 在代码中插入当前行号 func xff1a 在代码中插入当前行所在的函数的函数名 FILE xff1a 在代码中插入当前文件的文件名 DAT
  • 无人机入门知识

    无人机入门知识 无人机的定义 现在提到的 无人机 xff0c 通常是说 无人飞行载具 xff08 Unmanned Aerial Vehicle xff0c 简称UAV xff09 xff0c 或称无人飞机 无人飞机系统 xff08 Unm
  • http协议

    一 认识url url被称为统一资源定位符 xff0c 用来表示从互联网上得到的资源位置和访问这些资源的方法 他的表示方法一般为 xff1a span class token operator lt span 协议 span class t
  • 大小端区别和判断

    在代码中看到往寄存器写数据的时候 xff0c 使用到 volatile uint32 t address 61 cpu to le32 value xff0c 进一步追踪 xff0c if BYTE ORDER 61 61 LITTLE E
  • 结构体对齐详解

    1 结构体数据成员对齐的意义 许多实际的计算机系统对基本类型数据在内存中存放的位置有限制 xff0c 它们会要求这些数据的起始地址的值是某个数k的倍数 xff0c 这就是所谓的内存对齐 xff0c 而这个k则被称为该数据类型的对齐模数 al
  • C语言基础之格式化占位符

    在 printf 系列函数中 xff0c 下列哪个格式化占位符有可能导致内存任意写风险 A A n B d C p D s 使用printf修改变量的值 VS2008中使用 n输出遇到的问题及解决方法 include lt stdio h
  • 不常用的访问控制方式——http auth

    今天遇到一个http auth方式的访问控制 xff0c 访问页面时出现输入用户名与密码的验证 xff1a 使用ncrack爆破登陆后 xff0c 当想要爆破目录时 xff0c 必须每次请求都带着authorication头 xff0c 使
  • 数据库中字符串匹配函数like、rlike、instr、regexp_extract

    instr 简介 MySQL hive中函数 xff0c instr str substr position occurrence 其中str代表从哪个字符串中搜索 xff0c substr代表搜索哪个子字符串 xff0c 返回值为子字符串
  • 【C语言】实现linux下的基于C语言的一个简单的TCP客/服 端的通信

    对于基础的好的朋友可以直接取代码 xff0c 如果想要看详细解析的朋友可以详看下方的解析 TCP服务端代码 xff1a include lt stdio h gt include lt string h gt include lt stdl
  • 实验二 OpenGL的简单动画

    ZZU的学弟学妹们不要抄作业哦 一 实验目的 1 掌握OpenGL的闲置函数 2 掌握OpenGL的时间函数 3 掌握OpenGL的简单动画功能 4 了解OpengGL裁剪窗口 视区 显示窗口的概念和它们之间的关系 5 进一步掌握OpenG
  • 使用脚本(命令行)编译KEIL工程

    参考KEIL官网 http www keil com support man docs uv4 uv4 commandline htm Keil Build bat脚本 64 echo off set UV 61 D Keil v5 UV4
  • (二)五次多项式轨迹规划

    一 三次多项式轨迹规划的缺陷 上一篇文章说道 xff0c 三次多项式轨迹规划只能够保证速度和位移连续 xff0c 并不能保证加速度连续 加速度不连续将会对使电机抖动 甚至冲击 二 轨迹规划中的五次多项式 我们对加速度数值进行指定 xff0c
  • (三)抛物线过渡的线性函数规划

    前面说到 xff0c 无论是三次还是五次多项式进行规划存在以下缺点 xff1a 位移往返没有匀速段 这一节中 xff0c 我们的研究对象是初速度和末速度都为0关节运动 一 无过渡线性函数 假设时刻 t t t 和角度
  • GCC的学习(二)头文件及其库制作

    当前目录 43 相对路径 61 绝对路径大写i xff0c I头文件包含路径大写l xff0c L库文件路径小写l xff0c l库名字 xff08 去头去尾没有lib xff0c 也没有so ldd 查看动态库连接库存在性及其路径nm 查
  • VSCODE(八)launch 调试与运行

    前面讲了如何配置任务文件tasks json xff0c 调试功能在程序程序经常会用上 xff0c 那么VSCODE是完成调试功能的呢 xff1f 答 xff1a vscode文件夹内的launch json文件配置 xff0c 一些调试器
  • C++11线程库 (七) 线程的停止

    在这篇文章里 xff0c 我们将会讨论如何在C 43 43 11下停止和终止一个线程 为什么C 43 43 11不直接提供一个停止线程的方法 xff1f 这是因为线程在停止之前可能有一些资源需要被释放 关闭 xff0c 比如说 xff1a
  • QCustomplot(五)QCPAxisRect进行子绘图

    子绘图是比较复杂的 xff0c 你几乎需要掌握QCustomPlot所有类及其含义 那么需要掌握的类有 xff1a QCPAxis 描述轴行为 xff0c 轴需要依赖QCPAxisRectQCPAxisRect 描述矩形区域 xff0c 区
  • 关于C/C++的换行

    可以分为两种情况 xff1a 代码换行长字符串换行 一 C C 43 43 代码换行直接用enter键换行 xff0c 同时注意关键字不要切割 xff1a span class token keyword bool span a span
  • 31线性变换及其矩阵

    一 线性变换的概念 线性变换是数学中一种特殊的映射 xff0c 它具有将向量空间中的元素转换到另一向量空间元素的功能 xff0c 同时也保持了变换前后向量的线性不变的性质 线性变换的数学表达式如下 xff1a T c