当前位置: 首页 > news >正文

一文搞懂傅里叶级数与变换

描述

这篇文章的目标:以最简单易懂的方式,让大家学会傅里叶变换!

为什么要写一篇关于傅里叶变换相关知识的文章呢。有两个原因:
一、这个知识很有趣,可以理解它是一件炫酷的事情。在工作中,一次分享会同事站在很高的角度,重新分析了傅里叶变换。
二、曾经的经历与傅里叶相关,之前有一年的宿舍号码是553,数字英文是FiveFiveThree,而FFT正是快速傅里叶变换的缩写。学生时代一次短短的创业尝试,团队的名字就命名为了FFT。这让我对傅里叶变换有了一种特殊的情感。

因此,在这篇文章中用我的方式,总结一下傅里叶变换,以期能够将这个知识做一个回顾,并希望自己可以讲懂这个知识并分享出来

这篇文章主要讲解傅里叶变换及相关知识,整体脉络是这样的:
什么是傅里叶变换——理解傅里叶变换——应用傅里叶变换

注意:本文的讲解方式偏工程,部分数学证明会一带而过。

再表明一种观点哈:很多算法或技术你都可以把它想象成物理空间去理解,但3维以上不建议这样做,因为高维空间的事情很难用语言表述出来。而关于傅里叶变换,这篇文章一直在试图以物理的方式去理解这个知识。虽然看完之后会很清楚这一知识,但我希望这种方式,仅限于这次讲述。

傅里叶级数

了解傅里叶变换之前,应该了解什么是傅里叶级数。
(了解傅里叶级数,需要的数学知识可就多了:周期函数、三角级数…,要补充很多数学知识的解释。而如开头所说,这些不做讲解。)

了解了以上知识后,回来继续阅读。

所谓的傅里叶级数,就是将一个复杂函数展开成三角级数:
函数f(x)以2l为周期,或者只定义在[-l,l]上,且函数f(x)在[-l,l]上可积。则函数f(x)能够展开成如下形式的三角级数

f(x)∼a02+∑n=1∞(ancosnπxl+bnsinnπxl),n=1,2,...f(x)\sim\frac{a_0}{2}+\sum_{n=1}^{\infty}(a_ncos\frac{n\pi{x}}{l}+b_nsin\frac{n\pi{x}}{l}),n=1,2,...f(x)2a0+n=1(ancoslnπx+bnsinlnπx)n=1,2,...

右边的级数就是函数f(x)的傅里叶级数,相关的系数就是傅里叶系数

an=1l∫−llf(x)cosnπxldxa_n = \frac{1}{l}\int^l_{-l}f(x)cos\frac{n\pi{x}}{l}dxan=l1llf(x)coslnπxdx
bn=1l∫−llf(x)sinnπxldxb_n = \frac{1}{l}\int^l_{-l}f(x)sin\frac{n\pi{x}}{l}dxbn=l1llf(x)sinlnπxdx

简而言之,一个周期函数可以转化为一些三角函数的和

时域和频域

以一个正弦函数的表现为例

我们提到正弦函数,第一反应就是下图这样
在这里插入图片描述

这就是正弦函数在时域上的表现:一个随时间而变化的值,它的横坐标表示时间,纵坐标代表该时间上的值。

众所周知,正弦函数或者其他的三角函数,它们都是周期函数。

这时,有个小学生问你了:哥哥,我想看完整的正弦函数,你画给我呗。

你回答他:我是想画给你,但地球没那么大的纸啊。。。

这时,“频域”跳出来了:我来帮你画正弦

这个小故事出现在这里并不多余,显而易见我是引出频域这一概念,但更重要的是,我希望传达一种思想:万事万物都有不同的表现形式。如果我们愿意,我们是一定可以将同样的事物用另外一种表现形式完美还原的,区别就是表现形式的复杂程度是不是可控的。理解这一观点很重要,后面很多地方还会提到这个观点。

频域:以另外一种形式来表达信号(函数、图像等),它的横坐标是信号的频率,纵坐标是信号的振幅。这个标准的正弦函数,在频域上的表示是这样的。
在这里插入图片描述

左图就是sinxsinxsinx的时域表现,右图就sinxsinxsinx的频域表现。我们发现,这个无穷无尽的周期函数,变成了简简单单的一条竖线。我们改变了横纵坐标的意义,从而用两种方式表示了同一个信号

圆周运动与正弦波

时域上的正弦

频域为什么能表示时域上的信号,为了完全理解这点,我们来用最简单的圆来解释。

我们首先在x-o-y坐标轴上画一个圆,它的半径是A,圆心就放在坐标系原点。我们假设在圆周上有个点PPP,这个点不停地以一个角速度www在圆周上运动。

那么这个点的y值,就是一个正弦波。

用公式来表示的话

yp=Asin(wt)y_p = A sin (wt)yp=Asin(wt)

ttt代表点P运动的时间,单位为秒。上面的公式,实际上就是时域上正弦函数的一种表示。

频域上的正弦

那么现在我们使用频域的视角来看这个圆。

我们都知道角速度代表了单位时间转动的角度值,用公式表示就是 w=2πTw = \frac{2\pi}{T}w=T2πTTT就是周期时间。

列举两个正弦函数,它们在时域上可以这样表示,一个是A1sin(w1t)A_1sin (w_1t)A1sin(w1t),另一个是A2sin(w2t)A_2sin (w_2t)A2sin(w2t)。由于它们的角速度并不相同,所以在相同时间时,它们的值是不同的。因此,为了在频域上必须也能有一种方式表达这种不同。

与时域相同的是,纵坐标还是要表示为函数的值,需要改变的是横坐标的单位。我们要将时域上的单位:秒,改变为频域上的单位:频率。对此,我们就需要定义什么是1什么是0了。

那么我们定义:时域上角速度为0,就是频域上的“0”;时域上角速度为 w0w_0w0是频域上的“1”

这样定义过后,一个任意时域上的信号Asin(wt+ϕ)Asin(wt+\phi)Asin(wt+ϕ),都可以表示为横坐标为ww0\frac{w}{w_0}w0w,纵坐标为AAA的频域图了。相位差 ϕ\phiϕ稍后再说,它需要表现在相位谱上。

多函数的叠加

网上对于圆周运动转正弦,有很好的动图,这里截出一张图。
在这里插入图片描述

图中可能还是有点不好理解,我再解释一下。

我们有这样一个函数,y=Asin(x)+A3sin(3x)+A5sin(5x)+A7sin(7x)+...y = Asin(x)+\frac{A}{3}sin(3x)+\frac{A}{5}sin(5x)+\frac{A}{7}sin(7x)+...y=Asin(x)+3Asin(3x)+5Asin(5x)+7Asin(7x)+...

式子可以一直写下去,你可以自行更改式中的AAA,或者是3、5、7等。观察它的形式,我们发现它其实就是傅里叶级数。

第一层的圆,半径为A,它的频率(角速度)是1

第二层的圆,半径为A3\frac{A}{3}3A,它的频率(角速度)是3,它转的比第一层快

第三层的圆,半径为A5\frac{A}{5}5A,它的频率(角速度)是5,它转的比第二层更快

根据圆转的速度,我们可以将它们分成4个圆。这就是上图的含义。

稍微补充一下:

  1. 显然你是可以定义一个比第一层圆转的更慢或更快的圆,它的频率值会小于或大于1
  2. 如果你定义一个半径更小的圆,频率值仍然为1。这个圆会和第一层的圆有相同的频率值,而你还是想画成两个圆。如果只是画圆,肯定没啥不可以,只不过这并不利于观察,也不利于你理解频域图。这两个圆,最好的归宿还是画成1个圆,只不过增大它的半径。对应在频域图,频率1的竖线会变得高了一些。

终于,我们发现了傅里叶级数可以怎么用了。假设有人给了你一个非常复杂的曲线,就像图中第4行右图那样,然后让你变成图中第3行右图那样。

显然,在没有频域这一概念的时候。你只能通过数学的方式恢复出这条曲线的公式,这往往很费时。

但我们现在有了频域这个工具,我们有这条曲线的频域图,在频域图上这条未知的时域曲线只是简简单单的四条长短不一的竖线。我们只需要去掉高度最小的那一条,再重新计算就能得到需要的时域曲线了。这就是频域的作用。

时域图像、频域图像、相位谱

上一节我们已经通过圆周运动与正弦波,简单的解释了时域图像和频域图像了,相信我已经讲清楚了。

下面这幅图是很多人博客上都有的图,图确实很清晰,用这幅图可以继续讲解没必要再画一幅新的,贴在这里方便大家继续理解。
在这里插入图片描述

相位谱

唯一还没讲的就是相位谱。

从傅里叶级数中,我们学到了任何一个周期性函数是可以表示成三角级数的。但从刚才到现在,我们一直在说的只有正弦函数sinsinsin,那么余弦函数coscoscos去哪了呢。

余弦函数利用相位隐藏在了正弦函数中,我们都知道的公式

sin(π2+θ)=cos(θ)sin(\frac{\pi}{2}+\theta) = cos(\theta)sin(2π+θ)=cos(θ)

因此当我们用傅里叶级数将某个周期函数分解后,它的cos项我们依旧可以利用sin项来表示,只不过要加上一个相位差。

这样,分解开的频率不同的曲线将都可以用sinsinsin来表示,只不过他们的相位需要用额外的一个相位谱来表示。我们依旧利用这节的总图,这次从下面来看,就能得到相位谱了。我们都知道正弦函数(或者是余弦函数)的周期是π\piπ,那么显然相位谱的值域就是(−π,π](-\pi,\pi](π,π]

相位谱讲的比较简单,有问题可以问。

傅里叶级数与傅里叶变换

我们已经简单说明了时域和频域的全部含义。看到这里,我估计大家还存在的只有一个疑问:以上提到的例子,都是周期函数,利用傅里叶级数它们的频域图确实是能表示时域图。但既然时域和频域是个定义,这就要求所有信号(函数、图像等)都能从时域转到频域。那非周期函数呢,比如说一个脉冲,也能从时域转到频域上吗?

行!这就是傅里叶变换!

傅里叶变换

傅里叶变换,可以将一个时域上的非周期的连续信号,转换为一个在频域非周期的连续信号。

下面这张图,讲解了傅里叶级数与傅里叶变换的关系

在这里插入图片描述

显然第一张时域图,描述了一个周期信号。它的傅里叶级数展开在右面,也就是它的频域图。

当这个信号的周期变长时,查看一下前面的傅里叶级数展开的公式,会发现cos和sin项中的代表周期l的分母会变大,我们会得出一个结论:频域上的图会更加密集。也就是要取更多的频率的级数项。

当周期趋于无穷时,显然频域图就变成了一个连续信号。

从这里可以看出,傅里叶变换,实际上也可以简单理解为周期在无穷时的傅里叶级数。

当然了,如果我们把傅里叶变换画成一个综合了时域频域相位谱的总图,它大概长成下面这样子。

在这里插入图片描述

注意,这个图只是个例子。它说明了,当使用频域图表现傅里叶变换时,连续的频率会形成一个曲面,曲面向最左侧叠加形成的图,就是傅里叶变换前的时域图。

二维傅里叶变换

傅里叶变换可以生成一个频域图,而傅里叶反变换能够恢复成原图。不难理解,原图及傅里叶反变换后的图可以理解为之前一直说的时域图,而傅里叶变换后的结果就是频域图。

接下来我们围绕生成的频域图,进行分析

1. 图的中心

我们拿几幅简单的图看一下:全黑的图、全灰的图和全白的图,查看它们的频域图。

它们的频域图的差别很细微。一眼望去,它们的频域图都是黑色的。唯一的区别就是图正中心的像素值不一样。

全黑图的中心仍是黑色,全灰图的中心是灰色,而全白图的中心是白色。

事实上,频域图的中心点的像素值,是整幅图像的像素平均值。

2. 中心对称

图像的频域图,是中心对称的。

既然如此,实际上频域图只有四分之一的信息就够了。剩下的四分之三都可以根据中心对称来补全。

为了方便理解,接下来我选择图的右上角四分之一。

3. 像素的低频与高频

频域图上,每个像素点都代表一个频率的正弦波图。

连接中心点和像素点,该向量指向的方向,就是正弦波的波形延长方向,也就是时域方向。

而与向量垂直的方向,会把正弦波的波形复制方向。

仍然以右上角为例,假设图像尺寸为(100,100),存在一个像素点(70,50),显然它位于右上角的u轴方向。那么它代表的正弦波图,就是以一个频率(像素点位置决定),沿u轴方向不断向远处波动的正弦波,而v方向上将重复波形。

同理,像素点(50,30),将代表v轴方向不断延伸的正弦波,而u方向重复这一过程的正弦波图。像素点(30,30)将代表向与u轴(或者v轴)45度方向延长,在垂直方向重复的正弦波。

一句话讲懂:频域图上的每个像素点,代表一个不断重复的海浪。海浪的频率,由像素点距离中心的远近决定;海浪的高度,由像素点的值决定;海浪的方向,由像素点与u轴的夹角决定。

4. 像素值

显然,黑色的地方像素值为0,该像素点是没有意义的,不代表任何正弦波图。频谱图上每一个点均代表一个固定频率、幅值、相位的正弦波图像,那么抛开频谱图上幅值为0的点外,其他的所有点都映射着一张正弦图。

5. 相位图

当然了,图像傅里叶变换仍然需要一个相位图。
为什么仍然需要相位图?之前我们讲过,一个非周期的信号,可以通过傅里叶变换成一个频域上非周期的连续信号。那么在图像傅里叶变换中,原图,实际上就是那个非周期的信号。只不过这里,一维的信号变成了二维的图像。

原图经过傅里叶变换,转化成了一张频域图。频域图上的每个像素都代表了一个正弦波,但在频域图上,仅仅能表达幅值、频域与方向。因此必须再有一个相位图,来表示每个正弦波图的相位。这就是相位图的意义。

6. 尺寸

一般来说,傅里叶变换后的频域图,与原图的尺寸是一致的。但二者并没有一一对应的联系。

尺寸一致这个事情,我暂时也没有理解,也许是为了一致?希望有人可以给我讲解。

变换与反变换

我们使用傅里叶变换来将原图变为频域图,公式如下:

F(w)=∫−∞∞f(x)e−2πiwxdxF(w) =\int^\infty_{-\infty}f(x)e^{-2{\pi}iwx}dxF(w)=f(x)e2πiwxdx

我们还可以将频域图,反变换回原图,公式如下:

f(x)=∫−∞∞F(w)e2πiwxdxf(x)=\int^\infty_{-\infty}F(w)e^{2{\pi}iwx}dxf(x)=F(w)e2πiwxdx

假设我们手里有一张频谱图(和相位图),图中有1000个值不为0的亮点,那么它们会生成1000张固定频率、幅值和相位的正弦图像,把这一千张图像加在一起(包括基底的图),我们就能得到原图。这就是傅里叶反变换的过程。

傅里叶变换的意义

讲了这么多,从原图转换为频域图后,频域图的内容并不直观,那么傅里叶变换有何意义呢。

首先要说的是,我们的最终目标,还是要利用傅里叶反变换得到时域上的图,这样才便于我们理解。而傅里叶变换的意义就在于,我们可以在频域上做一些图像处理步骤。

现在到来的才是重点。

图像频域上的操作

以下的内容我参考了这篇知乎:https://zhuanlan.zhihu.com/p/454090354,写的很好

过滤高频或者低频

在图像频域上,我们可以自行做做实验:
使用一张彩色图片,将它先转化为灰度图,然后将灰度图通过傅里叶变换转化为频域图。
在频域图上,试着删去高频部分,傅里叶反变换后看看效果;再用同样的步骤试试低频。

我们会发现,去除了高频部分,频域图仅仅剩下了低频部分,反变换后的图像比原图模糊了一些;而去除了低频部分,反变换后的图像看起来保留了原图的边缘梯度信息。简单理解的话:低频构成了图像最重要的部分,而高频中存储着原图占比少的细节信息。

卷积

图像上的卷积操作,等于频域上的乘法。

如果我们用一个3*3的卷积核,来对原图进行卷积。这个操作等同于,将原图的频域图,与卷积核的频域图,二者做乘法。

python代码

import cv2 as cv
import numpy as npfrom matplotlib import pyplot as plt# 读取图像
img = cv.imread('Lena.jpg', 0)# 使用numpy来实现
# 傅里叶变换
f = np.fft.fft2(img)
fshift = np.fft.fftshift(f)
res = np.log(np.abs(fshift))# 傅里叶逆变换
ishift = np.fft.ifftshift(fshift)
iimg = np.fft.ifft2(ishift)
iimg = np.abs(iimg)# 展示结果
plt.figure("by numpy")
plt.subplot(131), plt.imshow(img, 'gray'), plt.title('Original Image')
plt.axis('off')
plt.subplot(132), plt.imshow(res, 'gray'), plt.title('Fourier Image')
plt.axis('off')
plt.subplot(133), plt.imshow(iimg, 'gray'), plt.title('Inverse Fourier Image')
plt.axis('off')
plt.show()# 使用opencv来实现
# 傅里叶变换
dft = cv.dft(np.float32(img), flags=cv.DFT_COMPLEX_OUTPUT)
dftshift = np.fft.fftshift(dft)
res1 = 20 * np.log(cv.magnitude(dftshift[:, :, 0], dftshift[:, :, 1]))
# 傅里叶逆变换
ishift = np.fft.ifftshift(dftshift)
iimg = cv.idft(ishift)
res2 = cv.magnitude(iimg[:, :, 0], iimg[:, :, 1])
# 展示结果
plt.figure("by cv")
plt.subplot(131), plt.imshow(img, 'gray'), plt.title('Original Image')
plt.axis('off')
plt.subplot(132), plt.imshow(res1, 'gray'), plt.title('Fourier Image')
plt.axis('off')
plt.subplot(133), plt.imshow(res2, 'gray'), plt.title('Inverse Fourier Image')
plt.axis('off')
plt.show()

相关文章:

  • 数据通信的基础知识(计算机网络 谢希仁)
  • 王道计算机网络 第二章 物理层
  • MATLAB制作mif文件——正弦信号发生器2
  • dsp_builder matlab 7.9 正弦信号发生器,基于Matlab/DSP Builder多波形信号发生器的设计...
  • 单片机正弦信号发生器示列
  • DDS信号源MATLAB,Xilinx-Verilog-学习笔记(19):正弦波信号发生器与DDS
  • DDS正弦信号发生器
  • matlab与FPGA联合产生一个正弦信号发生器(DDS原理介绍)
  • MATLAB制作mif文件——正弦信号发生器1
  • 正弦信号发生器的设计
  • 51单片机dds信号发生器 扫频 c语言,基于DDS正弦信号发生器设计.doc
  • C++入门(2)-类与对象
  • 正弦信号发生器C语言,正弦信号发生器c程序及解释(C program and explanation of sine signal generator).doc...
  • matlab firl,matlab 利用matlab工具箱函数fir1 联合开发网 - pudn.com
  • matlab 而且,MATLAB MATLAB是一种科学计算软件 联合开发网 - pudn.com
  • stokes方程matlab,Navier-Stokes matlab 238万源代码下载- www.pudn.com
  • contourlet matlab 源码,contourlet_toolbox matlab 238万源代码下载- www.pudn.com
  • myline java线段类,2008010 编写一个线段类 MyLine 联合开发网 - pudn.com
  • myline java线段类,MyLine 编写一个线段类 MyLine 联合开发网 - pudn.com
  • matlab seawater,seawater Matlab seawater工具包 联合开发网 - pudn.com
  • sou.php,phpsou RiSearchPHP是一个高效 联合开发网 - pudn.com
  • 无刷直流电机四象限matlab pudn,Matlabmodel 在分析无刷直流电机 BLDC 数学模型的基础上 提出了无刷直 联合开发网 - pudn.com...
  • adc matlab代码,pudn-几种ADC设计的matlab源码
  • php mui.picker,www MUI框架里边有很多例子教你如何使用 开发手机界面 WEB(ASP,PHP,...) 251万源代码下载- www.pudn.com...
  • matlab物探版,s4m matlab中画地震图件的子程序源代码,对物探人员很有用。 238万源代码下载- www.pudn.com...
  • osr matlab,DPD-Matlab-FPGA 好不容易找到的马岳林的 数字预失真 DPD仿真代码 包括 simulink 和 实现 275万源代码下载- www.pudn.com...
  • matlab bp结果,BP-networkmatlab BP神经网络实现手写数字识别,使用 。内有测试数据及实验结果,非常适合入门 276万源代码下载- www.pudn.com...
  • 登录会员管理系统java_huiyuan 会员管理,一款基于java web 的 软件,可以实现登录、注册、充值功能。 Jsp/Servlet 262万源代码下载- www.pudn.com...
  • 新闻更新php html,phphtml 新闻发布系统,运用php+mysql,里面包括数据库和php文件。 Other systems 其他 249万源代码下载- www.pudn.com...
  • gabor matlab pudn,matlab-Face-recognition 基于Gabor特征提取和人工智能的人脸检测系统 271万源代码下载- www.pudn.com...
  • 串口通讯 电脑和dsp_Sci 使用DSP2812的SCIA模块和PC机进行串口通信,用FIFO功能实现数据的发送和接受。 DSP program 261万源代码下载- www.pudn.com...
  • matlab 地震正演程序,seismic-forward 地球物理勘探中,基础的地震波正演模拟程序,包括五个 (高阶中心差分 matlab 266万源代码下载- www.pudn.com...
  • 地震勘探算法matlab,SeismicLab 地震勘探,matlab程序包, 地球物理, 学。作图工具等。 249万源代码下载- www.pudn.com...
  • 数据库的管理和维护
  • 二阶采样matlab程序,Sea-clutter-simulation 海杂波仿真程序,包括单基地雷达和双 的一阶、二阶 matlab 272万源代码下载- www.pudn.com...
  • cmi码型变换matlab程序,DDC 通信原理仿真 码型反变换的仿真实现 Ⅰ、基本任务:由抽样 联合开发网 - pudn.com...
  • PUDN
  • 下载代码去 pudn.com每个编程人员都需要的网站
  • pudn下载地址的规律
  • AM335x 通过GPMC 与 FPGA 之间通信
  • AM335x使用
  • am335x pll
  • am335x嵌入式开发-GPIO操作
  • AM335 嵌入式 linux,AM335X linux嵌入式平台can驱动移植
  • AM335X——1-Wire和IrDA驱动
  • am335x otg配置
  • am335x修改串口波特率
  • am335x linux源码,TI am335x sdk 自带linux源码下编译驱动出错解决办法
  • am335x LCD lvds VGA驱动调试
  • am335x usb linux配置,AM335X Usb 配置设备 RNDIS
  • AM335x评估板快速测试(3)
  • am335x linux内核烧写_am335x文件系统烧写问题
  • AM335X——SPI设备驱动
  • am335x linux修改ip,TI AM335x如何修改PHY及双网络
  • am335x linux 编译,TI am335x 内核源码编译命令等
  • am335x uboot移植
  • am335x linux内核烧写_AM335X uboot烧写
  • AM335X的汇编语言与c语言,AM335x的PRUSSv2简介与使用
  • am335x linux内核烧写_am335x 烧写 uboot
  • am335x linux 编译,** am335x中uboot的编译流程
  • AM335x开发板Linux,linux下am335x点亮LED
  • Linux下am335x的引脚配置
  • 工业级AM335X核心模块选型
  • AM335x(TQ335x)学习笔记——WM8960声卡驱动移植
  • AM335X ARM CORTEX-A8 微处理器技术参考手册 (中文版详解)1
  • AM335x SPL 代码分析
  • 命令关闭所有cmd窗口
  • Windows Cmd
  • Windows中CMD下如何查看文件MD5值
  • cmd启动浏览器
  • cmd中cd命令使用
  • cmd设置IP
  • cmd下使用ls命令
  • cmd破解wifi
  • cmd操作txt文件
  • cmd闪退
  • Python调用cmd
  • windows下CMD常用命令
  • CMD 十大危险指令
  • CMD切换用户
  • CMD权限不够怎么办
  • cmd5在线解密
  • C语言/实现MD5加密
  • STM32F4IO口模拟多个IIC方案
  • 51单片机12864串口硬件电路图和程序
  • 串口通信编程--多线程异步方式
  • 了解数据转换器错误及参数-AD转换设计中的基本问题整理
  • Delphi串口通信技术资料
  • 热门Java IDE——MyEclipse的数据库和持久化支持
  • 【全志T113-S3_100ask】8-USB串口获取GPS数据(含解析)
  • 基于WK2168的串口服务器设计方案
  • Camera 接口学习【转】
  • linux怎么安装pcie串口卡驱动,pci串口卡驱动是什么接口 pci串口卡驱动安装方法...
  • 关于各种串口
  • 区分:串口,COM口,UART,USART,RS232等等
  • STM32串口TTL和RS-232
  • p1口实验_【正点原子FPGA连载】第二章 实验平台简介-摘自【正点原子】开拓者 FPGA 开发指南...
  • 串口相关
  • 区分:串口,COM口,UART,USART
  • FPGA串口通信
  • 最常见接口与协议汇总之----RS485、RS232、RS422、Modbus RTU/TCP、 串口、并口、COM口、 TTL详解
  • (转载)PCI转并口 SJF 配置全过程
  • 行业便携终端串口扩展方案
  • PCI转并口 SJF 配置全过程
  • 什么是串并口硬盘 串口与并口硬盘的区别
  • 组态屏-笔记
  • 什么是组态屏
  • PLC组态
  • linux下组态软件,linux组态软件入门使用
  • Qt组态软件设计文章导航
  • 组态软件定义
  • 有哪些开源html5的组态软件,FScada组态软件
  • 组态王串口服务器通讯不稳定,组态王通信频繁掉线
  • 数仓建设教程
  • html组态插件_BY组态 插件 web组态 插件 物联网组态 插件
  • android 组态软件,Livzenwex安卓版组态软件
  • 在线组态工具 html,组态工具-界面组件
  • html组态插件_组态 web组态 组态插件 编辑器 工业组态 物联网组态 组态编辑器...
  • 适合python组态软件_组态软件心得体会
  • 组态中怎么使用mysql数据库,组态王写入MySQL数据库
  • 组态王图素制作_组态王主界面制作
  • 【工控入门】组态软件概念科普与基本构架描述
  • 组态王图素制作_组态王教程 很实用
  • 多比软件详细解读组态软件的构成,什么是组态软件?
  • java写组态_【Java】什么是云组态
  • WEB组态到底是个啥呢
  • 【串口屏基础知识分享】什么是指令集串口屏?什么是组态串口屏?
  • 什么是组态软件
  • 什么是云组态
  • 组态(Configuration)
  • 组态软件介绍
  • 什么是组态?组态的概念及发展趋势
  • 什么是组态
  • window.open一个新网页显示,已拦截此网页上的弹出式窗口
  • 浏览器插件:google浏览器允许弹出式窗口和重定向
  • 解决 Visual Studio Code terminal终端打开时为弹出式窗口问题
  • layui 实现点击弹出小窗口
  • java怎么弹出窗口_java怎么样实现弹出窗口
  • Jupyter Notebook弹出式窗口显示动图
  • 浏览器弹出阻止弹出式窗口怎么办,怎么设置浏览器不能访问的网址
  • 解决VSCode运行终端terminal为弹出式窗口
  • Android 中PopupWindow弹出式窗口的使用
  • 如何考察候选人 Vue 技术水平?
  • QT5 新建一个弹出式窗口
  • wincc 关闭弹出窗口C语言,退出WINCC操作画面时弹出对话框要求输入用户名和密码-工业支持中心-西门子中国...
  • Java Swing(九):弹出窗口
  • ABAP常用弹出窗口函数
  • matlab标弹出式菜单使用图行,MATLAB GUI设计之弹出式菜单的使用
  • 谷歌浏览器Google如何设置站点弹出窗口
  • html弹出式登录窗口(DIV悬浮窗口)实现
  • wincc关闭当前弹出窗口_wincc7.4弹出可关闭的画面除了用画面窗口做还有没有其他办法-工业支持中心-西门子中国...
  • python处理网页弹窗,用于处理弹出式浏览器窗口的Python webdriver
  • javafx弹出式窗口_JavaFX 8的弹出式编辑器
  • pyqt5子窗口跳出主窗口_弹出式窗口与 可用性,转换和跳出率
  • QT通过点击按钮弹出新的窗口(新建弹出式窗口)
  • android中弹出窗口,如何在Android中创建弹出窗口(PopupWindow)
  • 弹出式窗口详解
  • MFC创建弹出式的CWnd窗口
  • Qt弹出式窗口、Qt::popup闪退问题、设置窗口无焦点问题
  • 计算机设备图形符号,常用一次设备的图形符号和文字符号
  • 常见电容器图片_常用电容器的标识方法(图)
  • 贴片铝电容识别及型号_如何识别各种材质贴片电容
  • 电子电路学习笔记(2)——电容
  • 音响常用电解电容转发
  • 电容器的基础知识(1)
  • 3、电容器
  • 独石电容、瓷片电容、CBB电容、电解电容等各种电容相关知识
  • 电容器在电路中的作用(很全)
  • 【Linux】(五)GateWay远程开发方式-实验室服务器使用GateWay远程开发
  • 电容的分类
  • con 元器件符号_电子元器件常用的符号
  • 电解电容的ESR,想说三句话
  • IoT硬件-电容器
  • con 元器件符号_multisim元器件符号速查
  • 电容作用和选取
  • con 元器件符号_protel中常用元件电器符号
  • cad2017插入电气符号_电气电气CAD图形符号大全.pdf
  • con 元器件符号_PROTEUS中元器件符号
  • 电容知识点汇总
  • 数模电路基础知识 —— 3. 常见电路符号说明(电容、电阻、电感)
  • 常见电容器图片_电容的电路符号及图片识别
  • 电容大全
  • 电容详解
  • 电解电容的符号
  • kolla-ansible搭建 Openstack Yoga 版 ALLinone节点
  • allinone部署fate集群两方-1.9.0
  • 快速体验k8s集群的测试、开发环境--allinone部署
  • Hi3861_wifiiot_app_allinone.bin的烧录
  • kubeasz-2 kubeasz离线部署AllinOne K8S
  • 从零搭建云原生技术kubernetes(K8S)环境-通过kubesPhere的AllInOne方式
  • 生产环境中使用Kolla部署OpenStack-allinone云平台(红帽8版本)
  • 众至统一安全管理平台GuardIt AllInOne,一站式、轻量化、低成本、快接入
  • openstack --allinone
  • horizon创建实例(wallaby版本-allinone)
  • kubeasz-1 K8S AllinOne部署
  • ununtun18.04安装ns-allinone-2.35
  • fate AllinOne 安装遇到的问题
  • OpenStack(二)——使用Kolla部署OpenStack-allinone云平台
  • Openstack——allinone搭建(该文档基于Openstack Stein版本的All in One)
  • OpenStack-allinone安装(基于CentOS)
  • 彻底弄懂 Java 线程池原理
  • oVirt4.4单台主机Allinone部署(非HostedEngine方式)
  • packstack部署allinone
  • oVirt AllInOne
  • 搭建一套 Allinone 模式的 KubeSphere
  • Centos7 allinone方式安装openstack
  • OpenStack rdo一键allinone部署
  • AllinOne安装OpenStack
  • OpenStack-allinone-使用方法
  • (四)FATE框架AllinOne集群部署
  • Ubuntu 20.04 搭建OpenStack Yoga(allinone)
  • OpenStack(三)——allinone云平台的使用方法
  • 光耦4N33驱动继电器注意CTR参数
  • a4504光耦怎么检测好坏_怎样判断光耦的好坏
  • 高速光耦常用型号
  • 电子器件系列26:el 375n光耦 电气特性参数
  • 《光耦元器件》的特性分析
  • a4504光耦怎么检测好坏_贴片光耦怎么测量好坏,测量光耦好坏方法有哪些?
  • OCT1400 光耦参数测试仪
  • 光耦参数
  • 如何驱动光耦?计算相关参数?使电路正常工作
  • 简记_光耦的主要参数及应用
  • 数仓之范式
  • 光耦参数理解(转载)
  • vivo X9L的usb调试模式在哪里,开启vivo X9Lusb调试模式的流程
  • vivo X9s的USB调试模式在哪里,打开vivo X9sUSB调试模式的经验
  • android取消自动调试模式,安卓手机打开和关闭“USB调试”功能的方法
  • 手机无法弹出允许usb调试解决方法
  • chrome中usb调试手机不显示
  • 手机开发|USB调试时未弹出授权对话框
  • ImportError: cannot import name ‘xxx‘ from ‘xxx‘关于python导包的问题
  • 计算机丢失OX0000007B,win7系统开机蓝屏提示代码0x000007B的原因及解决方_博客
  • matlab 0x000007b,电脑蓝屏代码0x000007b,教您怎么办
  • win7电脑0x000007b蓝屏怎么办
  • 如何解决蓝屏代码0x000007B问题
  • win7蓝屏0x000000f4修复_关于电脑蓝屏代码0X000000F4的处理和预防方法
  • 计算机状态oxc0000001,0x0000001,教您怎么解决蓝屏故障0x0000001
  • 2016更改计算机名蓝屏,电脑蓝屏出现错误代码0x00000001的解决方法
  • wince蓝屏_win7电脑开机蓝屏提示错误代码0x0000000074
  • 系统遭遇STOP 0X0000007B蓝屏,附解决方案
  • win7蓝屏0x000000f4修复_关于电脑蓝屏代码0X000000F4的处理和预防
  • 计算机开机故障报错,电脑蓝屏报错0x0000004e怎么办_电脑开机蓝屏显示0x0000004e如何解决-win7之家...
  • win7蓝屏_WIN7蓝屏代码0X000000F4的处理和预防方法
  • 计算机蓝屏代码0x000000ED,电脑蓝屏代码0x000000ed的解决方法
  • 计算机蓝屏代码74,win7电脑开机蓝屏提示错误代码0x0000000074的解决办法
  • 计算机中Ox,0x000000116,详细教您解决电脑蓝屏代码0x000000116
  • 计算机状态oxc0000001,电脑蓝屏代码0x00000001解决方法
  • 服务器开机显示0x000000ca,使用电脑出现蓝屏代码0x000000CA故障该如何解决?
  • 因计算机丢失libapr然后蓝屏,如何修复蓝屏错误代码0x0000003b
  • c语言让系统蓝屏,0x000000116,教您解决电脑蓝屏代码0x000000116
  • win7启动出现蓝屏STOP: 0X0000007B
  • 联想服务器系统蓝屏,联想电脑蓝屏并提示“STOP:0X0000007B的原因分析和解决方法...
  • 蓝屏代码0x00000109 错误分析
  • 移动硬盘启动win7蓝屏7b_win7启动蓝屏0X0000007B代码的解决方法
  • Win7蓝屏代码 0x0000007B
  • 0x0000007b蓝屏的解决方法,怎么修复蓝屏问题?
  • 计算机蓝屏代码0x0000007b,开机出现蓝屏代码0X0000007B原因分析及解决方法
  • 2021-07-19C#CAD二次开发创建多线段
  • 关于unity用LineRenderer画图
  • Unity中LineRenderer相关知识点
  • Unity 基于LineRenderer组件实现连线功能
  • Unity中使用LineRenderer实现鼠标点击移动场景中画线
  • Unity3DUnity3D中LineRenderer的使用
  • 现代软件工程复习
  • 让微积分穿梭于工作与学习之间(15):圆弧直线的圆心,半径及其在趋于直线时的极限
  • 软件工程复习12:软件质量
  • 控制图纸多线相交交点凸起(Control PolyLine Bulge open and close )
  • Unity_MegaFiers_Bulge
  • bulge bracket 投行
  • 「GoCN酷Go推荐」​全文检索库bluge
  • 林伟 刘念《曾经爱过我》
  • 【评分】软件工程实践2017第一次作业-准备
  • 游戏夜读 | 刀塔选手比较老吗?
  • 博客版企划书(日不落战队)
  • 团队作业 - 项目验收与总结博客
  • 2017软工实践K班总结
  • diliucizuoye
  • 香港经典古装电视剧
  • 龙格现象 matlab,龙格现象matlab算法.doc
  • C语言循环结构作业总结
  • C语言分支/顺序作业总结
  • 阿里八八——预则立他山之石
  • 日期抽象数据类型设计与实现作业总结
  • 数据结构线性表博客作业总结
  • ZT 80-90年代港台300部电视剧 你看过多少?
  • 07-查找作业总结
  • 阿里八八“好记”测试报告
  • 阿里八八团队选题——做时间的智者
  • c语言第五次作业-指针-总结博客
  • 图作业总结
  • C语言第零次作业总结
  • 反应式架构:基本概念
  • Biotin-PEG2-alkyne|紫外线可裂解生物素-二聚乙二醇-炔烃|提供光谱图
  • 阿里八八“好记”——系统设计
  • 微电网重构|基于群稀疏性的机会约束微电网重构(Matlab代码和Python代码实现)
  • 2021年第一季度中国电竞行业网络关注度分析报告
  • 佟鑫 PHP,对话NB CEO佟鑫:引援、青训与轮换
  • 阿里八八Alapa事后诸葛亮
  • 史上最全最牛的XT800百科问答与使用指南
  • Mac查看jks签名文件信息
  • typecho修改分类
  • 葡萄酒酒进销存单机版_葡萄酒商人
  • python的第一篇文章
  • 如何编写可撤销的vba代码_编写可理解且可维护的VBA代码指南
  • kubernetes 机器_机器学习管道:设置本地Kubernetes
  • 介绍gruntwork模块服务和体系结构目录
  • mistake for/mix up/narrow down等动词词组
  • hapi.js_使用Hapi.js制作RESTful API
  • 艾伦图灵_艾伦唤醒控制
  • 文明4 java_文明4主题曲《Baba Yetu》(敬请关注中文歌词部分~)
  • cocos2d-x android 环境搭配,Cocos2d-x的android开发环境配置(Mac版)
  • two truths to live by——Hold fast, and let go
  • 比React—Redux和Redux好用100倍的原子级状态管理器,是我们公司自己封装的npm包,如果感兴趣可以研究研究,会大大提高开发效率
  • 查询隐藏的QQ
  • 让电脑不在卡顿
  • PHP获取QQ昵称和头像API
  • Vercel 部署静态页面教程
  • Flarum 宝塔完美迁移教程
  • 互联网小白拥有自己的博客
  • 英语第五次练习
  • 全国电子设计大赛资料打包网盘10G
  • 信号失真度测量装置(A 题)--2021 年全国大学生电子设计竞赛试题
  • 2017年全国大学生电子设计竞赛K题报告
  • 基于互联网的摄像测量系统(D 题)-- 2021 年全国大学生电子设计竞赛
  • 如何准备全国大学生电子设计大赛控制题?
  • 2021全国大学生电子设计竞赛F题(智能送药小车)国一赛后总结
  • 电子设计大赛-电源类题目分析
  • 2017全国大学生电子设计竞赛个人总结--B题滚球控制系统
  • 电子设计大赛-仪器仪表类题目分析
  • 电子设计大赛应该准备什么
  • 关于电子设计大赛
  • 2017 年全国大学生电子设计竞赛(本科组)题目√
  • 电子设计竞赛应该如何准备?
  • 19电子设计速成实战宝典pdf_Altium Designer 19(中文版) 电子设计速成实战宝典
  • 2021 全国大学生电子设计竞赛题目
  • 2019 全国大学生电子设计竞赛题目
  • 19电子设计速成实战宝典pdf_ALTIUMDESIGNER19(中文版)电子设计速成实战宝典
  • 电子设计竞赛(7)-2017年电赛A题:微电网模拟系统教程
  • 照度稳定可调 LED 台灯(K 题)【高职高专组】-- 2021 年全国大学生电子设计竞赛
  • 用电器分析识别装置(H 题)--2021 年全国大学生电子设计竞赛
  • iwebsec靶场 SQL注入漏洞通关笔记1- 数字型注入
  • 2021 年全国大学生电子设计竞赛实施过程说明
  • 2019电子设计大赛电磁曲射炮制作分享
  • 植保飞行器(G 题)--2021 年全国大学生电子设计竞赛
  • 2019电子设计大赛:纸张计数显示装置
  • 什么是全国大学生电子设计大赛?如何备战?
  • 电子电路设计
  • 电子初学者需要掌握的几款电子设计软件
  • 电子设计基础知识
  • 电脑计算机配置应用程序兼容性,电脑怎么打开兼容模式怎么办
  • android sdk版本与兼容,Android sdk版本以及兼容性问题
  • android兼容低版本方法,Android 应用程序向低版本兼容的问题
  • 计算机开机引导兼容模式,bios怎么设置ide兼容模式 bios设置ide兼容模式方法
  • 鸿蒙手机兼容安卓,鸿蒙系统能不能兼容安卓应用呢?兼容性怎么样?
  • 向前兼容与向后兼容
  • 游戏跟计算机不兼容,端游不兼容怎么解决
  • 汽车电磁兼容-中汽研电磁兼容室介绍
  • 索辰科技在科创板过会:拟募资金额有所下调,上半年亏损4000万元
  • html文档兼容模式,怎么取消兼容模式 excel出现兼容模式怎么取消
  • kotlin 不兼容java_Kotlin兼容性
  • matlab 兼容,matlab版本兼容问题
  • 前端 iOS 和 Android 的兼容问题
  • ie常见兼容性问题
  • 兼容产生的原因以及解决办法
  • 解决delphi7注册过期方法
  • 最新delphi7序列号和破解文件
  • DELPHI读取CPU的序列号
  • DELPHI利WMI获得硬盘参数
  • 【2.Delphi语法基础】7.程序异常处理
  • delphi 获取硬盘序列号、cpu号、bios号、网卡号
  • 安装delphi 10.4 社区版
  • Delphi利用字符串序列号对象
  • windows c语言 sata 序列号,【Delphi】获取IDE/SATA硬盘序列号
  • DELPHI获取硬盘、CPU、网卡序列号
  • Delphi 2009 安装序列号
  • DELPHI利用WMI获取主板参数
  • 获取CPU序列号的Delphi程序
  • Delphi XE7 下载 安装序列号 破解
  • Delphi 7序列号过期的解决方法
  • Spring Boot——日志文件
  • Delphi7 sn
  • MD5彩虹表
  • 2022最新彩虹表
  • 有一种攻击叫彩虹表攻击
  • 彩虹表rainbowtable
  • 【密码学】彩虹表
  • 深入理解 MD5 加密、彩虹表算法原理
  • 为什么说网上的md5加密解密站都是通过彩虹表解密的?
  • RainbowCrack:彩虹表进行口令破解
  • 1.4离线攻击工具:彩虹表破解
  • Ophcrack与彩虹表
  • 彩虹表的攻击与防御
  • Spark制作手机号md5彩虹表
  • 高效的彩虹表密码攻击法
  • 彩虹表
  • 网络安全 彩虹表 彩虹表破解 使用john
  • 密码学 / 什么是彩虹表?
  • 密码破解之王:Ophcrack彩虹表(Rainbow Tables)原理详解+120G彩虹表下载
  • 算法高级(23)-彩虹表(Rainbow Table)
  • 彻底搞懂彩虹表的实现原理
  • 【转载】pytorch 安装验证
  • 【转载】vue报错: error ‘xxx‘ is defined but never used no-unused-vars
  • OpenCV批量处理图片
  • OpenCV 鼠标点击获取像素坐标并写入txt文件
  • 【构建ML驱动的应用程序】第 11 章 :监控和更新模型
  • Python计算机视觉(一)
  • 图像到图像的映射
  • OpenCV 相机标定
  • 图像检索 Bag Of Features
  • javascript对象不完全探索记录05:小伙子,你对象咋来的?下篇 - 啥样的对象适合你...
  • 委托,匿名,lambda
  • ASP.NET MVC
  • javascript对象不完全探索记录03:小伙子,你对象咋来的?上篇
  • python中字典的一些tips
  • C++ Primer(第五版)课后习题记录 —— 第六章
  • [复试经验]2018届中科大考研面试过程
  • javascript对象不完全探索记录04:小伙子,你对象咋来的?中篇 - 现出你的原型!...
  • 尚硅谷最新版JavaWeb全套教程,java web零基础入门完整版(一)
  • OpenCV+Python实现SIFT匹配地理标记图像
  • js计算两个yyy-MM-dd日期相差的天数
  • js获取当前时间 yyy-MM-dd hh:mm:ss
  • [xxx@yyy ~]$或者xxx@yyy:~$分别代表的意思
  • js new Date(yyy-MM-dd) getToday
  • 洛谷P2393 yyy loves Maths II
  • 【暑期每日一题】洛谷 P2393 yyy loves Maths II
  • 洛谷——P2393 yyy loves Maths II
  • P1803 凌乱的yyy / 线段覆盖(贪心)
  • 【题解】洛谷P2396 yyy loves Maths VII 状压DP
  • 【OpenCV-Python】教程:3-9 轮廓(5)轮廓层级
  • 洛谷-P1803-凌乱的yyy / 线段覆盖-(贪心)
  • 洛谷P1803凌乱的yyy
  • 凌乱的yyy
  • yyy loves Maths II
  • [Luogu P2396] yyy loves Maths VII
  • 贪心——凌乱的yyy / 线段覆盖
  • yyy送礼物
  • 洛谷 P2393 yyy loves Maths II
  • 【洛谷】P1803 凌乱的yyy / 线段覆盖
  • P2372 yyy2015c01挑战算周长
  • P2394 yyy loves Chemistry I
  • P2393 yyy loves Maths II
  • yyy
  • P1803 凌乱的yyy / 线段覆盖
  • 【洛谷】P1803 凌乱的yyy 题解
  • Labview项目经典压装机程序源码,经典框架,研华数据采集卡
  • (NI/研华)采集卡1ms以上采集程序,包括储存。 为保密只截图部分。 可配置采集参数,以曲线图显示实时数据。
  • 三菱plc+研华采集卡+上位机源码
  • C#工程源码,给客戶交付的设备源程序 和西门子1200P L C通讯,研华数据采集卡还有C A N通讯模块
  • 计算机控制系统实验报告matlab,计算机控制工程实验报告.pdf
  • 数据处理——时间戳处理
  • Qt环境下研华数据采集卡AI和DI应用于DemoDevice并显示的练习
  • 以PCI-1710为例,如何获取研华数据采集卡的驱动、SDK以及产品手册
  • matlab数据采集工具箱在,欢迎访问虹科 - 数据采集板 | 实时工具包 | Matlab工具包 | 控制系统教具...
  • VB.net 研华IO卡1762的编程方法 控件方法 VS2010专业版
  • PCIE版本CAN数据采集卡计算机启动无法正常工作
  • 用LabVIEW开发简仪USB101数据采集卡会是怎样的?
  • 研华USB4711A采集卡高速中断模式采集总结
  • LeetCode 84.柱状图中最大的矩形
  • matlab usb采集,MATLAB调用研华USB数据采集卡实现数据实时采集_董超.pdf
  • labview与研华采集卡应用中的问题
  • 研华采集卡参数说明
  • 研华 matlab,Advantech-monitoring 基于MATLAB与研华数据采集卡的测控应用程序代码 238万源代码下载- www.pudn.com...
  • 研华DAQ数据采集卡编程
  • “为lan使用代理服务器”总是不断地自动勾上,怎么取消?
  • 为什么要用代理服务器?
  • 树莓派 teamviewer 使用代理服务器上网
  • 使用代理服务器哪些风险?
  • 【Python】使用代理服务器访问网站
  • 判断网络是否使用代理服务器
  • CentOS7虚拟机网络设置及使用代理服务器
  • QQ如何设置使用代理服务器?
  • 谷歌浏览器:为LAN使用代理服务器变成灰色不可操作
  • Python之使用代理服务器访问网页
  • 电脑自动使用代理服务器导致无法上网
  • 使用css形变实现一个立方体
  • Ubuntu使用代理服务器上网
  • 代理服务器使用全攻略(转)
  • matlab中fir1滤波器阶数,选择滤波器的最小阶数.ppt
  • matlab的巴特沃斯滤波器,巴特沃斯滤波器滤波
  • 巴特沃斯滤波器应用场合_巴特沃斯滤波器的特性
  • FIR数字滤波器的设计要点
  • 信号处理系统综合设计-最小阶数的IIR数字高通滤波器
  • 巴特沃兹低通滤波器设计之阶数确定
  • 滤波器简介:FIR与IIR
  • 窗函数法设计FIR中,如何选择窗函数和阶数N
  • matlab 数字滤波器的阶数,手把手教系列之一阶数字滤波器设计实现(附代码)
  • matlab 滤波器的阶数,如何确定插值滤波器的阶数
  • matlab滤波器获取阶数,滤波器阶数问题!!!
  • matlab 滤波器的阶数,!!!!滤波器阶数问题!!!!
  • 信号处理中的滤波器的阶数和谐波的理解
  • 滤波器阶数
  • 滤波器的阶数
  • RR调度器设计
  • JVM 常见的垃圾回收算法
  • RR调度解析
  • calico RR路由反射器
  • oracle rr什么意思,CD后面的RR+ RR-是什么意思啊?
  • BGP RR的环路避免机制
  • BGP/MPLS 虚拟专用网络 Option C 1 RR
  • 【芯片前端】与RR调度的相爱相杀——verilog实现RR调度器1