深入思考内积运算,再看傅里叶系数、伽辽金法本质
关于函数内积的思考
定义内积\点积的核心目的在于描述广义的角度(或称相关性)
1.起源于点积
u⃗⋅v⃗\vec{u} \cdot \vec{v} u⋅v
点积是人为定义的一种运算方式,描述了向量的长度和角度,其有两种等价的定义方式,代数定义和几何定义。
代数定义:
在线性空间中引入笛卡尔坐标系,坐标和向量一一对应,此时坐标等价于向量,通过对向量坐标的运算可获得点积结果。
二维向量
u⃗=[u1u2],v⃗=[v1v2]\vec{u} =\begin{bmatrix}u_{1} \\u_{2} \end{bmatrix}, \quad \vec{v} =\begin{bmatrix}v_{1} \\v_{2} \end{bmatrix} u=[u1u2],v=[v1v2]
u⃗⋅v⃗=[u1u2][v1v2]=u1v1+u2v2\vec{u} \cdot \vec{v} = \begin{bmatrix}u_{1} &u_{2} \end{bmatrix}\begin{bmatrix}v_{1} \\v_{2} \end{bmatrix} = u_{1}v_{1}+u_{2}v_{2} u⋅v=[u1u2][v1v2]=u1v1+u2v2
n维向量:
u⃗=[u1u2⋮un],v⃗=[v1v2⋮vn]\vec{u} = \begin{bmatrix}u_{1} \\u_{2} \\\vdots \\u_{n} \end{bmatrix}, \quad \vec{v} = \begin{bmatrix}v_{1} \\v_{2} \\\vdots \\v_{n} \end{bmatrix} u=⎣⎢⎢⎢⎡u1u2⋮un⎦⎥⎥⎥⎤,v=⎣⎢⎢⎢⎡v1v2⋮vn⎦⎥⎥⎥⎤
u⃗⋅v⃗=∑i=1nuivi=u1v1+u2v2+⋯+unvn\vec{u} \cdot \vec{v} = \sum_{i=1}^{n} u_{i} v_{i} = u_{1} v_{1} +u_{2} v_{2} +\dots+ u_{n} v_{n} u⋅v=i=1∑nuivi=u1v1+u2v2+⋯+unvn
几何定义
通过定义向量的长度和角度去描述向量。
u⃗⋅v⃗=∣u⃗∣∣v⃗∣cosθ\vec{u} \cdot \vec{v} =\left | \vec{u} \right | \left | \vec{v} \right |\cos \theta u⋅v=∣u∣∣v∣cosθ
定义向量长度的计算方式:
二维向量:∣u⃗∣=u12+u22=(∑i=12ui2)12n维向量:∣u⃗∣=u12+u22+⋯+un2=(∑i=1nui2)12\begin{aligned} &二维向量:\left | \vec{u} \right | =\sqrt{u_{1}^{2} + u_{2}^{2}} = (\sum_{i=1}^{2} u_{i}^{2})^{\frac{1}{2} } \\&n维向量:\left | \vec{u} \right | =\sqrt{u_{1}^{2} + u_{2}^{2}+\cdots + u_{n}^{2}} = (\sum_{i=1}^{n} u_{i}^{2})^{\frac{1}{2} } \end{aligned} 二维向量:∣u∣=u12+u22=(i=1∑2ui2)21n维向量:∣u∣=u12+u22+⋯+un2=(i=1∑nui2)21
(注:我们熟悉的欧几里得空间下的距离(长度)公式,其实是由点积运算给出的)
∣u⃗∣=u12+u22=(u⃗⋅u⃗)12\left | \vec{u} \right | =\sqrt{u_{1}^{2} + u_{2}^{2}} =(\vec{u} \cdot \vec{u})^{\frac{1}{2} } ∣u∣=u12+u22=(u⋅u)21
有一个普遍的误区,认为点积结果是投影、分量,严格的讲,不正确,只有当向量与单位向量做点积时,结果的数值才与投影、分量相等,但点积结果同时包含了两者的长度、夹角信息,所以不可能等价于一个数字。
并且投影与分量也是不同的概念
投影以整个空间的单位长度为单位长度,分量以被投影向量的长度为单位长度
投影=点积结果被投影向量长度投影=\frac{点积结果}{被投影向量长度}投影=被投影向量长度点积结果
u⃗在v⃗方向上的投影=∣u⃗∣cosθ=u⃗⋅v⃗∣v⃗∣\vec{u}在\vec{v} 方向上的投影 =\left | \vec{u} \right | \cos \theta =\frac{\vec{u} \cdot \vec{v} }{\left | \vec{v} \right |} u在v方向上的投影=∣u∣cosθ=∣v∣u⋅v
分量=点积结果被投影向量长度2=点积结果被投影向量与自己的点积分量=\frac{点积结果}{被投影向量长度 ^2}=\frac{点积结果}{被投影向量与自己的点积}分量=被投影向量长度2点积结果=被投影向量与自己的点积点积结果
u⃗在v⃗上的分量=u⃗⋅v⃗∣v⃗∣∣v⃗∣=u⃗⋅v⃗v⃗⋅v⃗\begin{aligned} \vec{u}在\vec{v} 上的分量 &=\frac{\vec{u} \cdot \vec{v} }{\left | \vec{v} \right |\left | \vec{v} \right |} \\ &=\frac{\vec{u} \cdot \vec{v} }{\vec{v} \cdot \vec{v} } \end{aligned} u在v上的分量=∣v∣∣v∣u⋅v=v⋅vu⋅v
2.点积的意义
因为代数定义仅仅运算数字,难以进行分析,所以我们从等价的几何定义分析其意义
u⃗⋅v⃗=∣u⃗∣∣v⃗∣cosθ\vec{u} \cdot \vec{v} =\left | \vec{u} \right | \left | \vec{v} \right |\cos \theta u⋅v=∣u∣∣v∣cosθ
由几何定义的表达式可知,点积的结果中包含了两个向量的长度和夹角信息
长度信息:∣u⃗∣∣v⃗∣夹角信息:cosθ\begin{aligned} &长度信息: \left | \vec{u} \right | \left | \vec{v} \right | \\&夹角信息:\cos \theta \end{aligned} 长度信息:∣u∣∣v∣夹角信息:cosθ
其中的夹角信息很有价值,它反映了向量间的相关性(或者说接近程度),如果两个向量的夹角越小,说明形态很接近,相关性很强。(正是这条性质,使得点积/内积运算拥有了很大的威力)
不过三角函数已经可以描述角度了,为什么还要引入点积运算去描述角度的?
从几何意义的点积结果看,描述角度的是三角函数,确实如此,但问题在于,有可能三角函数不容易计算,甚至在高维空间、其他空间中,不一定存在这种可以直接计算出角度信息的三角函数运算法则,所以更广泛描述角度的方式是,先通过代数定义计算出点积结果,再计算长度信息,然后从点积结果中过滤掉长度信息,剩下的就是抽象的广义角度。
所以引入点积运算的目的是同时定义出长度和角度(但这导致点积运算不纯粹,因为点积结果融和了长度、角度信息)
3.描述向量间的相关性
必须注意的是,点积的结果融和了长度信息和夹角信息,因为相关性和向量的长度无关,所以当我们只关心相关性时,长度信息就变成了干扰,所以利用点积衡量相关性前,应该对向量做单位化(归一化、标准化)处理,剔除长度信息,只保留夹角信息。
1.不剔除长度信息,无法准确描述相关性:
a⃗=[11],b⃗=[01]\vec{a} =\begin{bmatrix}1 \\1 \end{bmatrix}, \quad \vec{b} =\begin{bmatrix}0 \\1 \end{bmatrix} a=[11],b=[01]
a⃗⋅b⃗=[11][01]=12a⃗⋅b⃗=[22][01]=2\begin{aligned} &\vec{a} \cdot \vec{b}=\begin{bmatrix}1 &1 \end{bmatrix}\begin{bmatrix}0 \\1 \end{bmatrix}=1 \\ &2\vec{a} \cdot \vec{b}=\begin{bmatrix}2 &2 \end{bmatrix}\begin{bmatrix}0 \\1 \end{bmatrix}=2 \end{aligned} a⋅b=[11][01]=12a⋅b=[22][01]=2
2.剔除长度信息:单位化处理,将所有向量的长度(模长)均变换到1
a′⃗=a⃗∥a⃗∥=[11]12+12=[2222]a′′⃗=2a⃗∥2a⃗∥=[22]22+22=[2222]b′⃗=b⃗∥b⃗∥=[01]02+12=[01]\begin{aligned} &\vec{{a}' } = \frac{\vec{a} }{\left \| \vec{a} \right \| } = \frac{\begin{bmatrix}1 &1 \end{bmatrix}}{\sqrt{1^{2}+1^{2} } } =\begin{bmatrix}\frac{\sqrt{2} }{2} &\frac{\sqrt{2} }{2} \end{bmatrix} \\ &\vec{{a}''} = \frac{2\vec{a} }{\left \| 2\vec{a} \right \| } = \frac{\begin{bmatrix}2 &2 \end{bmatrix}}{\sqrt{2^{2}+2^{2} } } =\begin{bmatrix}\frac{\sqrt{2} }{2} &\frac{\sqrt{2} }{2} \end{bmatrix} \\ &\vec{{b}' } = \frac{\vec{b} }{\left \| \vec{b} \right \| } = \frac{\begin{bmatrix}0 &1 \end{bmatrix}}{\sqrt{0^{2}+1^{2} } } =\begin{bmatrix}0 &1 \end{bmatrix} \end{aligned} a′=∥a∥a=12+12[11]=[2222]a′′=∥2a∥2a=22+22[22]=[2222]b′=∥∥∥b∥∥∥b=02+12[01]=[01]
a⃗′⋅b⃗′=[2222][01]=22a⃗′′⋅b⃗′=[2222][01]=22\begin{aligned} &{\vec{a}}' \cdot {\vec{b}}' =\begin{bmatrix}\frac{\sqrt{2} }{2} &\frac{\sqrt{2} }{2} \end{bmatrix}\begin{bmatrix}0 \\1 \end{bmatrix}=\frac{\sqrt{2} }{2} \\&{\vec{a}}'' \cdot {\vec{b}}' =\begin{bmatrix}\frac{\sqrt{2} }{2} &\frac{\sqrt{2} }{2} \end{bmatrix}\begin{bmatrix}0 \\1 \end{bmatrix}=\frac{\sqrt{2} }{2} \end{aligned} a′⋅b′=[2222][01]=22a′′⋅b′=[2222][01]=22
4.函数内积
定义函数内积运算(实数域下)
⟨f(x),g(x)⟩=∫abf(x)g(x)dx\left \langle f(x),g(x) \right \rangle =\int_{a}^{b} f(x)g(x)dx ⟨f(x),g(x)⟩=∫abf(x)g(x)dx
从n维向量的点积理解函数内积
在f(x)\ f(x) f(x)和g(x)\ g(x) g(x)函数曲线上选部分点作为n维向量
f⃗=[f1f2⋯fn]g⃗=[g1g2⋯gn]\begin{aligned} \vec{f} = \begin{bmatrix}f_{1} &f_{2} &\cdots &f_{n} \end{bmatrix} \\ \vec{g} = \begin{bmatrix}g_{1} &g_{2} &\cdots &g_{n} \end{bmatrix} \end{aligned} f=[f1f2⋯fn]g=[g1g2⋯gn]
对n维向量做点积,得到点积结果
f⃗⋅g⃗=∑i=1nfigi(1)\vec{f} \cdot \vec{g} =\sum_{i=1}^{n} f_{i}g_{i} \quad (1) f⋅g=i=1∑nfigi(1)
当n→∞\ n\to\infty n→∞时,就是“函数的点积”
limn→∞∑i=1nfigi(2)\lim_{n \to \infty} \sum_{i=1}^{n} f_{i}g_{i}\quad (2) n→∞limi=1∑nfigi(2)
但此数列求和后发散,发散的数列没法计算,所以人为的对(1)式乘上 △x\triangle x△x,转为求黎曼和,也就是黎曼积分。(乘△x\triangle x△x的原因分析见后文)
(∑i=1nfigi)△x(3)(\sum_{i=1}^{n} f_{i}g_{i})\bigtriangleup x \quad (3) (i=1∑nfigi)△x(3)
对(3)式的n\ n n求极限:
limn→∞(∑i=1nfigi)△x=∫abf(x)g(x)dx(4)\lim_{n \to \infty} (\sum_{i=1}^{n} f_{i}g_{i})\bigtriangleup x =\int_{a}^{b} f(x)g(x)dx \quad (4) n→∞lim(i=1∑nfigi)△x=∫abf(x)g(x)dx(4)
将(4)中右式的积分定义为内积的代数计算方式,并采用尖括号+逗号的书写方式代表这种运算:
⟨f(x),g(x)⟩=∫abf(x)g(x)dx(5)\left \langle f(x),g(x) \right \rangle =\int_{a}^{b} f(x)g(x)dx \quad (5) ⟨f(x),g(x)⟩=∫abf(x)g(x)dx(5)
分析乘 △x\triangle x△x的根本原因
(2)式到(3)式可能会难以理解,因为按照n维向量的推广,乘积+求和就已经完成推广了,为什么要额外引入一个△x\triangle x△x,如果直接凭空引入一个量,那这推广的内积真的是内积吗,它还具备点积的描述长度和角度的能力吗?
答案是肯定的
首先,引入△x\triangle x△x,一定程度上是因为(2)式发散不能用,取平均,求黎曼积分之后才变得可计算。
最重要的,其实是我们的目的,如果目的达到了,采用何种形式都是可以的。
当初定义点积运算的目的是为了描述长度、角度,所以如果由(5)式定义出的内积运算具备了同时描述长度和角度的能力,那它就是正确的
我们暂且认为(5)式是成立的,思考其长度定义
点积运算带来的长度定义:
∣u⃗∣=(u⃗⋅u⃗)12=u12+u22\left | \vec{u} \right | =(\vec{u} \cdot \vec{u})^{\frac{1}{2} } =\sqrt{u_{1}^{2} + u_{2}^{2}} ∣u∣=(u⋅u)21=u12+u22
内积运算带来的长度定义:(长度被推广为范数,原有的两根竖线,变为四根)
∥f(x)∥=⟨f(x),f(x)⟩12=∫abf(x)f(x)dx\left \| f(x) \right \| = \left \langle f(x),f(x) \right \rangle ^{\frac{1}{2} } =\sqrt{\int_{a}^{b} f(x)f(x)dx} ∥f(x)∥=⟨f(x),f(x)⟩21=∫abf(x)f(x)dx
此处推广的长度定义是符合认知的,两者结构一模一样
按照前文点积运算描述角度方式,只需得知点积结果、长度信息,即可反推出角度信息,而由(5)式定义的内积运算,有收敛的运算结果,也定义了长度的计算方式,自然可以反推出广义的角度信息,所以目的达到了,(5)式具备同时描述长度和角度的能力,它确实站得住脚。
我们人为乘上了 △x\triangle x△x再取极限(相当于乘了一个常数),看似改变了推广的内积运算结构,会影响长度信息(不影响角度信息,因为角度代表相关性,而相关性和长度、大小无关),实际不然,因为长度不是绝对的,不同空间下的长度是不同的,这是一个相对量,一个按照内积运算所定义出来的量。所以当内积运算法则改变时,长度的定义也发生了变化
乘上 △x\triangle x△x再取极限时,欧几里得空间的长度由点积运算定义,推广点积为内积运算后,欧几里得空间演变为内积空间,其长度由内积运算定义,原有的点积运算不再适用
5.由内积看傅里叶系数
以一个部分正弦展开的函数f(x)f(x)f(x)为例,容易理解,f(x)f(x)f(x)是由基函数sinnπlsin\frac{n\pi }{l}sinlnπ的线性叠加组成
f(x)=∑n=1∞Ansinnπlxf(x)=\sum_{n=1}^{\infty } A_{n} sin\frac{n\pi }{l} x f(x)=n=1∑∞Ansinlnπx
其傅里叶系数An\ A_{n} An为:
An=2l∫0lf(x)sinnπlx⋅dx(6)A_{n}=\frac{2}{l}\int_{0}^{l} f(x)sin\frac{n\pi }{l} x\cdot dx\quad (6) An=l2∫0lf(x)sinlnπx⋅dx(6)
和向量的分解完全一样,其实An\ A_{n} An就是f(x)f(x)f(x)在各个基函数sinnπlsin\frac{n\pi }{l}sinlnπ上的分量(分量=内积结果基函数的长度2=内积结果基函数与自己的内积)(分量=\frac{内积结果}{基函数的长度^{2}}=\frac{内积结果}{基函数与自己的内积})(分量=基函数的长度2内积结果=基函数与自己的内积内积结果)
An=⟨f(x),sinnπlx⟩∥sinnπlx,sinnπlx∥2=⟨f(x),sinnπlx⟩⟨sinnπlx,sinnπlx⟩\begin{aligned} A_{n} &= \frac{\left \langle f(x),sin\frac{n\pi}{l}x \right \rangle } {\left \| sin\frac{n\pi}{l}x,sin\frac{n\pi}{l}x \right \| ^2} \\ &=\frac{\left \langle f(x),sin\frac{n\pi}{l}x \right \rangle } {\left \langle sin\frac{n\pi}{l}x,sin\frac{n\pi}{l}x \right \rangle } \end{aligned} An=∥∥sinlnπx,sinlnπx∥∥2⟨f(x),sinlnπx⟩=⟨sinlnπx,sinlnπx⟩⟨f(x),sinlnπx⟩
推导:
将An\ A_{n} An改写为:
An=∫0lf(x)sinnπlx⋅dxl2(7)A_{n}=\frac{\int_{0}^{l} f(x)sin\frac{n\pi }{l} x\cdot dx }{\frac{l}{2}}\quad (7) An=2l∫0lf(x)sinlnπx⋅dx(7)
其中2l\frac{2}{l}l2的由来:
l2=∫0lsinnπlx⋅sinnπlx⋅dx=∥sinnπlx,sinnπlx∥2=⟨sinnπlx,sinnπlx⟩(8)\begin{aligned} \frac{l}{2} &=\int_{0}^{l} sin\frac{n\pi }{l}x \cdot sin\frac{n\pi }{l}x\cdot dx \\ &=\left \| sin\frac{n\pi }{l}x,sin\frac{n\pi }{l}x \right \| ^2 \\ &=\left \langle sin\frac{n\pi }{l}x,sin\frac{n\pi }{l}x \right \rangle \quad (8) \end{aligned} 2l=∫0lsinlnπx⋅sinlnπx⋅dx=∥∥∥sinlnπx,sinlnπx∥∥∥2=⟨sinlnπx,sinlnπx⟩(8)
所以2l\frac{2}{l}l2就是基函数sinnπlxsin\frac{n\pi }{l}xsinlnπx与自己的内积结果、长度的平方
分母:
∫0lf(x)sinnπlx⋅dx=⟨f(x),sinnπlx⟩(9)\int_{0}^{l} f(x)sin\frac{n\pi }{l} x\cdot dx =\left \langle f(x),sin\frac{n\pi }{l} x \right \rangle \quad (9) ∫0lf(x)sinlnπx⋅dx=⟨f(x),sinlnπx⟩(9)
将(8)、(9)式代入(7)式中即可得到(6)式
6.由内积思考伽辽金法
加权余量法是建立在变分原理、求解微分方程近似解的一种方法。其核心部分,是令余量与权函数的内积为0。
其中伽辽金方法的精度最高,因为直接选取了构成近似函数的基函数作为权函数,在思维层面容易理解为何伽辽金方法的精度最高。
因为如果近似函数与构成它的基函数内积为0,说明近似函数在基函数上的分量为0,而近似函数本身就只是由基函数构成的,如果在各个基函数上分量为0,则只能可是其本身为0,才满足。
7.其他概念
空间=集合+结构
集合可以是数,如常见的实数域、复数域
结构指最底层的运算法则,如加减乘除
几种运算法则:
加法运算:加减法
数乘运算:乘除法
范数运算:有多种定义,但本质是定义了距离(或称长度、大小)
内积运算:有多种定义,但本质是定义了角度,并且恰好自带了一种距离的定义
距离((或称长度、大小)是相对的概念,所以存在很多种范数运算
角度的本质是相关性(或称相似性、接近程度)
几种空间结构:
线性空间结构(简称线性结构) = 加法 + 数乘
内积空间结构 = 线性结构 + 内积运算
在内积空间中我们可以讨论长度、角度
深入思考内积运算,再看傅里叶系数、伽辽金法本质相关推荐
- 数据结构:设线性表中每个元素有两个数据项k1和k2,现对线性表按一下规则进行排序:先看数据项k1,k1值小的元素在前,大的在后;在k1值相同的情况下,再看k2,k2值小的在前,大的在后。满足这种要求的
题目: 设线性表中每个元素有两个数据项k1和k2,现对线性表按一下规则进行排序:先看数据项k1,k1值小的元素在前,大的在后:在k1值相同的情况下,再看k2,k2值小的在前,大的在后.满足这种要求的排 ...
- 有什么值得一看再看的书吗?
1.<自卑与超越> 适合谁: 成人眼中的教科书,青少年的成长读本 主要内容: 这是一本探讨人生意义的心理学书籍,直面人类心理的本质--自卑感,追溯自卑感形成的起源与 对个人的影响,帮助人 ...
- 再看《肖申克的救赎》
记得第一次看<肖申克的救赎>好像是大一或大二的时候,那时候第一次看的感觉就是"情节精彩,出乎意料".除此之外好像就没有别的感觉了. 前几天在网站上看到这部片在IMDB的 ...
- qtdesigner怎么实现菜单栏跳转_3种公众号菜单栏设置类型,手把手教你做,不会的话那就再看一遍...
常见的菜单栏设置怎么去设置呢?在我们的公众号左侧的菜单栏中,你可以找到我们的自定义菜单,这个功能,点击进去之后,你就可以看到菜单的内容,它可以有三种类型可选:一种叫发送消息,一种叫跳转网页,一种叫跳转 ...
- 长得类似铁甲小宝的机器人_铁甲小宝:小时候只顾看机器人忽略重点,长大后再看:是我太天真...
铁甲小宝:小时候只顾看机器人忽略重点,长大后再看:是我太天真 铁甲小宝相亲大家都是看过的,作为早期的三大人特摄之一,铁甲小宝针对的完全就是儿童,小时候我们也是很喜欢这部作品,只是现在在荧幕上已经很难看 ...
- OpenCV学习笔记(四十一)——再看基础数据结构core OpenCV学习笔记(四十二)——Mat数据操作之普通青年、文艺青年、暴力青年 OpenCV学习笔记(四十三)——存取像素值操作汇总co
OpenCV学习笔记(四十一)--再看基础数据结构core 记得我在OpenCV学习笔记(四)--新版本的数据结构core里面讲过新版本的数据结构了,可是我再看这部分的时候,我发现我当时实在是看得太马 ...
- android 智能指针的学习先看邓凡平的书扫盲 再看前面两片博客提升
android 智能指针的学习先看邓凡平的书扫盲 再看前面两片博客提升 转载于:https://www.cnblogs.com/jeanschen/p/3507512.html
- 再看数据库——(2)视图
概念 *是从用户使用数据库的观点来说的. *从一个或多个表(视图)中导出来的 *一个虚表,或者说查询表 为什么要用视图呢? 一是简单,看到的就是需要的.视图不仅可以简化用户对数据的理解,也可以简化他们 ...
- 以前看书时记得一些笔记(二),很早了,现在再看都有些看不懂了
MFC学习: 1.CObject类为MFC总类,该类下面有一个重要的类CCmdTarget.而CCmdTarget类下面又有四个重要的继承类,分别为:CWinThread.CDocument.CDoc ...
- 再看结构体对齐与小端联合问题
再看结构体对齐与小端联合问题 @(组成原理) 先再次回看一道题目的分析. (2012.15)某计算机存储器按字节编址,采用小端方式存放数据.假定编译器规定int型和short型长度分别为32位和16位 ...
最新文章
- 3.6 Git 分支 - 分支的衍合
- GDCM:gdcm::Series的测试程序
- 大学生助学贷款如何还利息(本金+利息都可以)
- 四、ajax请求超时与网络异常处理
- 逆向调试完成端口回包实践总结
- 埋点测试-移动端/PC端
- 测试telnet安装成功 以及如何进入和退出telnet命令模式
- 关于线段树or 树状树状 在二维平面搞事情!Orz
- python文件都是脚本吗_.py文件是python脚本吗
- 蓝桥杯 算法训练 矩阵乘法
- BoundsChecker使用说明
- 微支付几个参数的获得
- 【移动网络】5GC:5G核心网络的移动性管理(Mobility Management)
- 讲课大师 把微信消息同步转发到企业微信中
- 计算机专业就业方向 【转】
- list中抽出某一个字段的值_Java 将List中所有item中的某一个字段值提出来生成一个新的List...
- kali源代码简单说明
- 2021-03-22 什么是SFP端口
- 如何实现汇川PLC和工业机器人的协议解析与数据采集?
- 跟风 —— 由技术跟风所想到的