小波教程-part2-傅立叶变换和短时傅立叶变换

2023-11-08

1. 基本原理

让我们简要回顾一下第一部分。 我们基本上需要小波变换(WT)来分析非平稳信号,即其频率响应随时间变化的信号。 我已经写过傅立叶变换(FT)不适合非平稳信号,并且已经展示了一些例子以使其更加清晰。 快速回顾一下,让我举一个例子。 假设我们有两个不同的信号。 还假设它们都具有相同的光谱成分,但有一个主要区别。 假设其中一个信号始终具有四个频率分量,另一个信号在不同时间具有相同的四个频率分量。 如本教程第1部分中的示例所示,这两个信号的FT相同。 尽管两个信号完全不同,但它们的FT的(幅度)是一样的!。 显然,这告诉我们不能将FT用于非平稳信号。

2. 傅立叶变换

由于以下两个原因,我不会详细介绍FT:

(1)详细介绍FT会使这个教程显得太多了。
(2)而且FT不是我们的主要关注点。

但是,由于两个原因,我想再次提到几个要点:

(1)了解WT的工作原理是必要的背景。
(2)多年来,它一直是最重要的信号处理工具。

现在让我们看一下傅立叶变换的工作原理:
FT将信号分解为不同频率的复杂指数函数。 它的执行方式由以下两个方程式定义:

X ( f ) = ∫ − ∞ ∞ x ( t ) ⋅ e − 2 j π f t d t X(f) = \int_{-\infty}^{\infty} x(t) \cdot e^{-2 j \pi f t} dt X(f)=x(t)e2jπftdt··········································(1)

x ( t ) = ∫ − ∞ ∞ X ( f ) ⋅ e 2 j π f t d f x(t) = \int_{-\infty}^{\infty} X(f) \cdot e^{2 j \pi f t} df x(t)=X(f)e2jπftdf···········································(2)

在上式中, t t t代表时间, f f f代表频率, x x x代表信号。 注意, x x x表示时域的信号, X X X表示频域的信号。 此约定用于区分信号的两种表示形式。 式(1)称为 x ( t ) x(t) x(t)的傅立叶变换,式(2)称为 X ( f ) X(f) X(f)的傅立叶逆变换,即 x ( t ) x(t) x(t)

对于那些一直在使用傅立叶变换的人来说,已经很熟悉了。 不幸的是,许多人在不了解基本原理的情况下使用这些方程式。

请仔细看等式(1):

信号 x ( t ) x(t) x(t)在某个特定频率“ f f f”处乘以指数项,然后在所有时间积分! (这里的关键词是“所有时间”,如下所述)。

请注意,等式(1)中的指数项也可以根据欧拉公式写成:

c o s ( 2 π f t ) − i ⋅ s i n ( 2 π f t ) cos(2 \pi f t)-i \cdot sin(2 \pi f t) cos(2πft)isin(2πft)

上面的表达式具有频率 f f f的余弦的实部和频率 f f f的正弦的虚部。 因此,我们实际要做的是将原始信号乘以具有频率 f f f的正弦和余弦的复数表达式。 然后,我们集成该乘积。 换句话说,我们将所有积分添加到该乘积中。 如果这种积分的结果(除了某种无穷求和之外)是一个很大的值,那么我们 说:信号 x ( t ) x(t) x(t)在频率“ f f f”处具有占主导地位的频谱分量。 这意味着该信号的主要部分由频率 f f f 成。 如果积分结果是一个较小的值,则表示信号中没有 f f f的主要频率分量。 如果该积 分结果为零,则该信号根本不包含频率“ f f f”。

在此特别感兴趣的是了解这种积分的工作原理:将信号与频率“ f f f”的正弦项相乘。 如果信号具有频率“ f f f”的高幅度分量,则该分量和正弦项将重合,并且它们的乘积将给出(相对)大的值。 这表明,信号“ x x x”具有主要频率分量“ f f f”。

但是,如果信号的频率分量不为“ f f f”,则乘积将为零,这表明信号的频率分量不为“ f f f”。 如果频率“ f f f”不是信号“ x ( t ) x(t) x(t)”的主要成分,则乘积将给出一个(相对)小的值。 这表明,信号“ x x x”中的频率分量“ f f f”具有小的幅度,换言之,它不是“ x x x”的主要分量。

现在,请注意,转换方程式(公式1)中的积分随时间而变化。 但是,(1)的左侧是频率的函数。 因此,针对每个 f f f值计算(1)中的积分

注意,傅立叶变换表明是否存在某个频率分量。 此信息与该组件的显示时间无关。 因此,在使用FT处理信号之前,了解信号是否平稳非常重要。

第一部分给出的示例现在应该很清楚。 我想再次在这里把它放出来:

看下图,该图显示了信号:

x ( t ) = c o s ( 2 π ⋅ 5 t ) + c o s ( 2 π ⋅ 10 t ) + c o s ( 2 π ⋅ 20 t ) + c o s ( 2 π ⋅ 50 t ) x(t) = cos(2 \pi \cdot 5 t) + cos(2 \pi \cdot 10 t) + cos(2 \pi \cdot 20 t) + cos(2 \pi \cdot 50 t) x(t)=cos(2π5t)+cos(2π10t)+cos(2π20t)+cos(2π50t)

也就是说,它具有5 Hz,10 Hz,20 Hz和50 Hz的四个频率分量,它们分布于每个时间点。

在这里插入图片描述
这是它的FT。 此处截取了一部分频率轴,但理论上它会扩展到无穷大(对于连续傅立叶变换(CFT)。实际上,我们在这里计算离散傅立叶变换(DFT)),在这种情况下,在这种情况下,频率轴上升到(至少)信号采样频率的两倍,并且变换后的信号是对称的。但是,这并不重要。)

在这里插入图片描述注意上图中的四个峰值,它们对应于四个不同的频率。

现在,看下图:在这里,该信号还是余弦信号,并且具有相同的四个频率。 但是,这些频率在不同的时间出现。

在这里插入图片描述
这是信号的傅立叶变换:
在这里插入图片描述你应该在上图中看到的是,它(几乎)与之前的FT图相同。 请仔细查看并注意对应于5、10、20和50 Hz的主要四个峰值。 我本可以使这个数字看起来与上一个非常相似,但是我并不是故意这样做的。 峰值之间存在类似噪声的原因表明,这些频率也存在于信号中。 但是它们之所以具有较小的幅度,是因为它们不是给定信号的主要频谱分量,而我们看到这些分量的原因是由于频率之间的突然变化。 尤其要注意时域信号如何在约250(ms)的时间变化(通过一些适当的滤波技术,可以清除像频域信号一样的噪声,但这与我们的主题无关。如果您需要进一步 信息,请给我发送电子邮件)。

到此时,您应该已经了解了傅立叶变换的基本概念,何时可以使用傅立叶变换,何时不可以使用傅立叶变换。 从上面的示例可以看出,FT无法很好地区分这两个信号。 对于FT,这两个信号是相同的,因为它们由相同的频率分量组成。 因此,FT不适用于分析非平稳信号。

请记住这一非常重要的属性。 不幸的是,许多使用FT的人没有想到这一点。 他们认为他们拥有的信号是固定的,而在许多实际情况下却不是。 当然,如果您对这些频率分量在什么时间不感兴趣,而仅对存在哪些频率分量感兴趣,那么FT可以作为一种合适的工具来使用。

因此,既然我们知道不能将FT用于非平稳信号,那么我们该怎么办?

请记住,我已经提到过小波变换仅使用了大约十年(作者很久以前写的)。 您可能想知道研究人员是否仅在十年前就注意到了这种非平稳性问题。

很明显不是。

显然,他们在弄清楚小波变换之前一定已经做了一些事情。

好吧…,他们确实做到了…

他们想出了…

线性时间频率表示

3. 短时傅立叶变换

那么,我们如何将这个时间信息插入到频率图中? 让我们更仔细地研究手中的问题。

傅立叶变换出什么问题了呢? 它不适用于非平稳信号。 让我们考虑一下:我们是否可以假设非平稳信号的某些部分是平稳的呢?

答案是肯定的。

请看上面的Figure2.4。 每250个时间单位间隔信号保持平稳。

您可能会问以下问题?

如果我们可以认为平稳的部分很小怎么办?

好吧,如果它太小,那就太小了。 我们对此无能为力,实际上,这也没有错。 我们必须按照物理学家的规则进行游戏。

如果可以假设信号处于静止状态的区域太小,则我们从狭窄的窗口中查看该信号,该窗口足够窄以至于从这些窗口看到的信号部分的确是平稳的。

对这种方法的研究最终产生了傅立叶变换的修订版,即所谓的:短时傅立叶变换(STFT)

STFT和FT之间只有很小的差异。 在STFT中,信号被分成足够小的段,在这些段中,可以假定信号的这些段(部分)是平稳的。 为此,选择窗口函数“ w w w”。 该窗口的宽度必须等于其平稳性有效的信号段。

该窗口函数首先位于信号的最开始。 即,窗函数位于t = 0。 假设窗口的宽度为“ T”秒。 在此时间点(t = 0),窗口函数将与前T / 2秒重叠(我将假定所有时间单位均为秒)。 然后将窗口函数与信号相乘。 这样,只有窗口的适当权重才选择了信号的前T / 2秒(如果窗口是一个矩形,幅度为“ 1”,则乘积将等于信号)。 然后,假定该乘积只是要获取其FT的另一个信号。 换句话说,该乘积的FT值与任何信号的FT值一样。

这种转换的结果是信号的前T / 2秒的FT。 如果信号的这部分是固定的(如假定的那样),那么将没有问题,并且获得的结果将是信号的前T / 2秒的真实频率表示。

下一步是将这个窗口(持续约t1秒钟)移至新位置,与信号相乘,然后乘积FT。 遵循此过程,直到通过以“ t1”秒的间隔移动窗口来达到信号的结尾。

STFT的以下定义在一行中总结了所有上述解释:

S T F T X ( ω ) ( t , f ) = ∫ t [ x ( t ) ⋅ ω ∗ ( t − t ′ ) ] ⋅ e − j 2 π f t d t STFT_X^{(\omega)}(t,f) = \int_t \left[ x(t) \cdot \omega^*(t - t') \right] \cdot e^{-j 2 \pi f t} dt STFTX(ω)(t,f)=t[x(t)ω(tt)]ej2πftdt

请仔细查看以上方程。 x ( t ) x(t) x(t)是信号本身, w ( t ) w(t) w(t)是窗函数, ∗ * 是复合共轭。 从等式中可以看出,信号的STFT就是信号的FT乘以窗函数,而且这里的积分是有限时间的积分,这样才能挖掘出时间信息。

对于每个 t ′ t' t f f f,都会计算出一个新的STFT系数。

下图可以帮助您更好地理解这一点:
在这里插入图片描述
窗口函数是彩色的类似于高斯函数。 红色的显示窗口位于t = t1’,蓝色的显示窗口t = t2’,绿色的显示窗口位于t = t3’。 这些将在三个不同的时间对应于三个不同的FT。 因此,我们将获得信号的真实时频表示(TFR)。

可能最好的理解方法是看一个例子。 首先,由于我们的变换是时间和频率的函数(与FT不同,后者仅是频率的函数),因此变换将是二维的(如果也计算幅度,则为3)。 让我们以一个非平稳信号为例,如下所示:

在这里插入图片描述在此信号中,在不同时间有四个频率分量。 0到250 ms的间隔是300 Hz的简单正弦曲线,其他250 ms的间隔分别是200 Hz,100 Hz和50 Hz的正弦曲线。 显然,这是一个非平稳信号。 现在,让我们看一下它的STFT:
在这里插入图片描述不出所料,这是二维图(如果也算振幅,则为3维)。 “ x”和“ y”轴分别是时间和频率。 请忽略轴上的数字,因为它们已在某些方面进行了归一化,这对我们而言目前没有任何意义。 只需检查时频表示的形状即可。

首先,请注意,该图形相对于频率轴的中线是对称的。 请记住,尽管未显示,但实际信号的FT始终是对称的,因为STFT只是FT的窗口形式,所以STFT在频率上也是对称的也就不足为奇了。 对称部分据说与负频率相关,这是一个很难理解的奇特概念,幸运的是,它并不重要。 只需知道STFT和FT是对称的即可。

重要的是四个峰值。 注意,有四个峰值对应于四个不同的频率分量。 还应注意,与FT不同,这四个峰沿时间轴位于不同的时间间隔。 请记住,原始信号在不同时间具有四个频谱分量。

现在我们有了信号的真实时频表示。 我们不仅知道信号中存在哪些频率分量,还知道它们在时间上的位置。

您可能会奇怪,因为STFT给出了信号的TFR,所以为什么需要小波变换。 在上面的示例中,STFT的隐式问题并不明显。 当然,故意选择一个效果很好的示例来演示该概念。

STFT的问题在于其根源可以追溯到海森堡不确定性原理这一事实。 最初应用于运动粒子的动量和位置的这一原理可以应用于信号的时频信息。 简而言之,这一原理指出,人们不知道信号的确切时频表示,即,人们不知道在什么时间实例存在什么频谱分量。 人们可以知道存在一定频带的时间间隔,这是一个分辨率问题。

STFT的问题与所使用的窗口函数的宽度有关。 为了技术上正确,窗口功能的这种宽度称为窗口的支持。 如果窗口函数较窄,则称为紧凑支持。 这个术语在小波世界中更常用,我们将在后面看到。

回想一下,在FT中,在频域中没有分辨率问题,即我们确切知道存在哪些频率; 同样,在时域中也没有时间分辨率问题,因为我们知道每个时刻的信号值。 相反,FT中的时间分辨率和时域中的频率分辨率为零,因为我们没有关于它们的信息。 在FT中提供理想的频率分辨率的事实是,FT中使用的窗口是其内核,即 e j ω t e ^ {j \omega t} ejωt函数,该函数在从负无穷大到正无穷大的所有时间一直存在。 现在,在STFT中,我们的窗口是有限长度的,因此它仅覆盖一部分信号,这导致频率分辨率变差。 简而言之,我们不再知道信号中存在的确切频率成分,而只知道存在的一个频带:

在FT中,核函数使我们可以获得完美的频率分辨率,因为内核本身是无限长的窗口。 在STFT中,窗口的长度是有限的,我们不再具有完美的频率分辨率。 您可能会问,为什么不像FT中那样使STFT中的窗口长度无限长,以获得完美的频率分辨率? 好吧,比起您一直散布所有时间信息,您基本上最终会使用FT而不是STFT。 长话短说,我们面临以下困境:

如果使用无限长的窗口,则会得到FT,该FT可以提供理想的频率分辨率,但没有时间信息。 此外,为了获得平稳性,我们必须具有足够短的窗口,其中信号是固定的。 我们使窗口越窄,时间分辨率越好,平稳性的假设越好,但频率分辨率越差:

窄窗口===>时间分辨率好,频率分辨率差。
(注:个人理解是因为窗口过窄会遗漏一些低频信号,因为窗口比低频信号的周期都要窄)

宽窗口===>良好的频率分辨率,较差的时间分辨率。
(注:个人理解是比如窗口为一个小时,那么50到60分钟时都信号都包含哪些频率就不得而知了)

为了看到这些效果,让我们看几个示例:我将显示四个不同长度的窗口,我们将使用它们来计算STFT,然后看看会发生什么:

我们使用的窗口函数只是形式为下面这样的高斯函数:

e − a ( t 2 2 ) e^{-a \left( \frac{t^2}{2} \right)} ea(2t2)

其中a确定窗口的长度,t是时间。 下图显示了由a的值确定的不同支撑区域的四个窗口函数。 请忽略a的数值,因为计算此函数的时间间隔也将确定该函数。 只要注意每个窗口的长度即可。 上面给出的示例是使用第二个值a = 0.001计算的。 现在,我将显示使用其他窗口计算出的上述相同信号的STFT。
在这里插入图片描述首先,让我们看一下第一个最窄的窗口。 我们期望STFT具有很好的时间分辨率,但频率分辨率相对较差:
在这里插入图片描述上图显示了此STFT。 为了更好地解释,该图是从俯视鸟瞰图中以一定角度显示的。 注意,四个峰在时间上彼此很好地分开。 还要注意,在频域中,每个峰值都覆盖一个频率范围,而不是单个频率值。 现在让我们扩大窗口,看一下第三个窗口(第一个示例中已经显示了第二个)。
在这里插入图片描述请注意,与以前的情况不同,这些峰在时间上并没有很好地分离,但是,在频域中,分辨率要好得多。 现在,让我们进一步增加窗口的宽度,看看会发生什么:

在这里插入图片描述好吧,这对于现在的任何人都不应该感到惊讶,因为我们期望得到一个糟糕的(我的意思是绝对可怕的)时间分辨率。

这些示例应该已经说明了STFT分辨率的隐含问题。 任何想使用STFT的人都面临着分辨率问题。 使用哪种窗口? 狭窄的窗口提供了良好的时间分辨率,但频率分辨率却很差。 宽窗口可提供良好的频率分辨率,但时间分辨率较差; 此外,宽大的窗户可能会违反平稳状态。 当然,问题是选择窗口函数一劳永逸,并在整个分析中使用该窗口的结果。 答案当然取决于应用程序:如果原始信号中的频率成分彼此分离良好,那么我们可能会牺牲一些频率分辨率并获得良好的时间分辨率,因为频谱成分已经彼此充分分离 。 但是,如果不是这种情况,那么良好的窗口函数可能比找到好的股票进行投资更加困难。

现在,您应该已经意识到小波变换是如何发挥作用的。 小波变换(WT)在一定程度上解决了分辨率的难题,这将在下一部分中看到。

这样就完成了本教程的第二部分。 连续小波变换是本教程第三部分的主题。 如果到现在为止您没有太多麻烦,并且上面写的对您来说很有意义,那么您现在准备在理解小波理论的基本概念时面对最终挑战。

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

小波教程-part2-傅立叶变换和短时傅立叶变换 的相关文章

  • Vim几种跳转方式

    Vim几种跳转方式 ps 以下时我常用的一些跳转指令 用于参考和复习记忆 还有一些后续会更新 文件内跳转 移动光标 普通模式下左h 右l 上k 下j 可以使用数字 hlkj 实现跳跃式移动 字符间跳转 跳转到当前字符的前面 普通模式下i 跳
  • CesiumJS三维案例

    WebGL近几年越来越被人们所关注 但是二三维开发难度也比普通web要高出许多 不管我们是在在开发或者是学习过程中 往往需要耗费大量的时间去查阅资料和研究官方案例 让本来就非常紧张的而宝贵的精力卷到了不关紧要的地方 而大多二三维的包 ope
  • apk文件结构解析一

    Apk文件用WINRAR压缩软件解压缩后 如下图所示 主要是三个文件 lib META INF res 和三个文件夹 AndroidManifest xml classes dex resources arsc 用工具展开可以看到如下所示的
  • Protobuf在java中的简单使用实例

    TTprotobuf是一种跨语言的数据转换协议 由google开源的 已支持大部份语言 在一般的数据交互过程中都是使用json xml等来做数据的转换 这其中涉及复杂的解析与序列化反序列化问题 如果在大量数据并发请求时 也会导致性能问题 p
  • Vue-过滤器

    Vue 过滤器 过滤器 过滤器 Filters 是vue 为开发者提供的功能 常用于文本的格式化 过滤器可以用在两个地方 插值表达式 和 v bind 属性绑定 过滤器应该被添加在JavaScript 表达式的尾部 由 管道符 进行调用 p
  • 图像增强之同态滤波python实现——20221204工作总结

    目录 参考 同态滤波python实现 代码 效果 参考 1 https wenku baidu com view 4eb598180a12a21614791711cc7931b765ce7ba9 html wkts 167005422236
  • IDEA 调试前端代码JS 及安装JetBrains IDE Support

    收藏从未间断 学习从未开始 不需要F12窗口 不需要JS代码写debugger断点 不需要写console log 输出 一 JetBrains IDE Support 1 必须使用谷歌浏览器 安装JetBrains IDE Support
  • go 进阶 sync相关: 一. sync.atomic​ 原子操作

    sync atomic 原子操作 一 sync atomic 基础 sync atomic Value 二 sync atomic 源码分析 1 ifaceWords 2 Store 添加 3 Load 获取 一 sync atomic 基
  • c#Replace用法

    string txt 333 333 txt Replace Console WriteLine 赋值前 txt txt txt Replace Console WriteLine 赋值后 txt
  • Grape 依赖管理器

    本文参考自Groovy文档 The Grape dependency manager 本文代码大部分来自Groovy官方文档 Groovy自带了一个嵌入式的jar依赖管理器 这个管理器的主要作用应该是配合Groovy脚本使用 让我们不需要任
  • Struts2 几种校验

    1 Struts2手动校验 1 重写actionsupport类的validate方法 action需要继承ActionSupport类 public class StrutshAction extends ActionSupport 在v
  • 三种基于感知哈希算法的相似图像检索技术

    大家都用google或baidu的识图功能 上面就是我搜索一幅图片的结果 该引擎实现相似图片搜素的关键技术叫做 感知哈希算法 Perceptual hash algorithm 它的作用是对每张图片生成一个 指纹 fingerprint 字
  • Unity插件-NGUI

    1 基本使用 NGUI gt 选项 gt Reset Perfab Toolbar 显示预制体UI组件 可以直接拖拽到场景中 使用NGUI 必须要有一个UIRoot作为父组件 在场景中的UIRoot中右键单击 然后点Create来创建组件
  • 中文垃圾邮件分类。2种特征提取,词袋特征,IFIDF分布特征,贝叶斯NB,LR,SVM各自表现的实战示例代码

    结论 数据 ham data txt spam data txt stop words utf8 数据处理 author liushuchun import re import string import jieba 加载停用词 with
  • 【TensorFlow】远程使用jupyter和TensorBoard

    1 远程jupyter notebook 在服务器端以如下方式启动jupyter jupyter notebook ip 0 0 0 0 结果如下 本地输入上述网址 将括号中的内容替换为服务器IP 即可启动 2 远程TensorBoard
  • Excel Vba范例

    第1部分 单元格选择技巧与选区统计 第1章 单元格与区域选择技巧 实例1选择A列最后一个非空单元格 Sub 选择A列最后一个非空单元格 Range a1048576 End xlUp Select End Sub 讲解 1 Range 返回
  • Promise初步详解(resolve,reject,catch)

    Duang 最近搭建了一个自己的博客小破站 欢迎各位小伙伴来访吖 ares coder blog portalhttps www ares stack cn blog service game 一 何为Promise 为了直观一点 首先我们
  • 利用nginx搭建简单图片服务器实现负载均衡

    在我们搭建一个网站的时候 往往有时候会加载更多的图片 如果都从tomcat服务器来获取静态资源 这样会增加我们服务器的负载 使得服务器运行 速度非常慢 这时我们可以使用nginx服务器来加载这些静态资源 这样就可以实现负载均衡 为我们的To
  • 【高危】企业微信私有化2.5-2.6.93版本后台API未授权访问漏洞

    漏洞描述 企业微信私有化2 5 x版本及2 6 930000版本以下后台中存在接口未授权访问漏洞 攻击者通过访问 cgi bin gateway agentinfo接口可获得Secret 从而利用开放API获取企业通讯录等敏感信息及企业微信

随机推荐

  • 【硬件学习之路】

    硬件学习之路 一个22年毕业的飞行器控制专业转电子的硬件小白 这篇文章将记录我实习以及工作经历 也就是自己的学习笔记啦 硬件本来就是一个需要积累的东西 学海无涯 希望自己能不断丰富自己 而我的工作岗位是助理工程师 主要是学习绘制原理图 板上
  • 机器学习——聚类——商场客户聚类

    聚类的介绍 案例 商场客户聚类 目录 聚类的介绍 案例 商场客户聚类 一 读取数据 二 聚类 KMeans函数的参数讲解 KMeans属性列表 KMeans接口列表 三 查看数据及可视化 sort values 方法 groupby 的常见
  • python torch在dataloader处卡死

    torch在dataloader处卡死 1 解决方案 2 调试历程 2 1 网上搜索了很多方法 尝试无果 故亲自调试 2 2 进入函数 发现一段神奇的代码 1 解决方案 num workers设置为0 一般解决大多数问题 修改读取数据部分代
  • 解析properties文件

    import java io InputStream import java util Properties public class PropertiesUtil public static String getValue String
  • ruby网站部署到服务器,Ruby China 已迁移到新的服务器,基于 Docker 部署

    终于决定要迁移新服务器了 之前那台老机器陪同 Ruby China 运作了 6 年 如果我没记错的话 系统还是 Ubuntu 12 04 昨天下班前还是准备 同步数据库到 UCloud 的 PostgreSQL 服务上 避免以后自己维护和备
  • Elasticsearch(一):入门篇

    文章目录 一 Docker安装ES和Kibana 二 基本概念 文档 index 索引 type 类型 id ID 三 保存或修改文档数据 POST PUT 四 检索文档 GET 1 检索一个文档 2 检索多个文档 mget 五 删除文档
  • 计算机组成原理——万字详解

    引言 作为还在学习的学生和不断进步的同事 学习计算机组成原理具有以下几个重要的好处 它可以帮助你深入理解计算机系统的工作原理 包括处理器 存储器 输入输出设备等组成部分之间的交互关系 这种深入理解可以提高你对计算机系统的整体把握能力 让你能
  • Selenium 自动化测试实战笔记1

    1 安装 selenium pip install selenium 3 11 0 安装指定版本 pip install selenium U 安装最新版本 pip show selenium 查看当前版本 pip uninstall se
  • linux关机等待90秒

    ubuntu关机时 提示 A stop job is running for Session c2 of user 1min 30s 解决方法 sudo gedit etc systemd system conf 去除默认的注释 修改为 D
  • Lua : 回调函数不用怕,用法简单仿C/C++

    Lua也可以做回调函数 那当然 不明觉厉 嘿嘿嘿 那是不是可以在Lua编程时候搞点飞机啦 加 function add x y return x y end 减法 function minux x y return x y end func
  • 使用Iframe+Post请求的方式嵌入第三方页面

    背景描述 本身我们有自己的一个系统 之后采购了一个新系统 新系统的页面要嵌入到我们自己系统页面来 两个系统之间的权限交互通过token来进行传递和认证 本身嵌入采用如下方式就非常简单了 就是常规的iframe嵌入页面的方式 常规的ifram
  • Windows10上使用VS2017编译OpenCV3.4.2+OpenCV_Contrib3.4.2+Python3.6.2操作步骤

    1 从https github com opencv opencv releases 下载opencv 3 4 2 zip并解压缩到D soft OpenCV3 4 2 opencv 3 4 2目录下 2 从https github com
  • ps2021神经网络AI滤镜下载,ps神经网络滤镜安装包

    如何解决ps2021 新版 AI神经滤镜不能用 网上买正版 更新下就好了 盗版的都会有各种这样的问题 ps2021神经AI滤镜是需简要上传云端 由Adobe官方服务器人工智能运算的 Ps2021版本新增了Ai神经元滤镜 它不是与软件一起安装
  • 如何实现Android app开机自启动

    这里写目录标题 前言 代码实现 AndroidManifest xml BootReceiver java MainActivity java MyService java 问题解决 前言 上一篇文章如何实现无界面Android app介绍
  • 深度学习中Epoch、Batch以及Batch size的设定

    Epoch 时期 当一个完整的数据集通过了神经网络一次并且返回了一次 这个过程称为一次 gt epoch 也就是说 所有训练样本在神经网络中都 进行了一次正向传播 和一次反向传播 再通俗一点 一个Epoch就是将所有训练样本训练一次的过程
  • ajax url传递中文乱码,jquery.ajax的url中传递中文乱码问题的解决方法

    JQuery JQuery默认的contentType application x www form urlencoded 这才是JQuery正在乱码的原因 在未指定字符集的时候 是使用ISO 8859 1 ISO8859 1 通常叫做La
  • 数据结构与算法实验3(栈) 括号匹配

    数据结构与算法实验3 栈 括号匹配 用栈ADT应用 对称符号匹配判断 输入一行符号 以 结束 判断其中的对称符号是否匹配 对称符号包括 lt gt 输出分为以下几种情况 1 对称符号都匹配 输出 right 2 如果处理到最后出现了失配 则
  • 54331 DCDC 纹波 干扰 收音机 原因

    用了一个TPS54331 把12 V 转5V后 再经过一个LDO转换为3 3V给收音IC 结果干扰非常大 这之前用的是LM2596 对收音机干扰很小 分析输出纹波大 但是一直找不到原因 最后 经过排查 对比54331的datasheet 发
  • docker第三讲 docker启动redis容器以及解决redis-server启动redis直接挂的问题

    本地启动配置redis 安装包安装 下载安装包 下载地址 Download Redis 安装gcc yum install gcc 把下载好的redis 6 2 1r 1 tar gz放在 usr local文件夹下 并解压 wget ht
  • 小波教程-part2-傅立叶变换和短时傅立叶变换

    1 基本原理 让我们简要回顾一下第一部分 我们基本上需要小波变换 WT 来分析非平稳信号 即其频率响应随时间变化的信号 我已经写过傅立叶变换 FT 不适合非平稳信号 并且已经展示了一些例子以使其更加清晰 快速回顾一下 让我举一个例子 假设我