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

音频进阶学习九——离散时间傅里叶变换DTFT

文章目录


前言

按照傅里叶发展的历史,本应该先介绍傅里叶级数,但是由于DTFT更通用,且DTFT是属于核心理论,而DFS是DTFT的一种特列,所以该系列文章中先介绍DTFT,也就是离散时间傅里叶变换。

|版本声明:山河君,未经博主允许,禁止转载


一、DTFT的解释

1.DTFT公式

看一下DTFT和CFT也就是连续傅里叶变换的对比:

  • DTFT
    X ( ω ) = ∑ n = − ∞ ∞ x [ n ] e − j ω n X(\omega)=\sum_{n=-\infty}^{\infty}x[n]e^{-j\omega n} X(ω)=n=x[n]ejωn
  • CFT
    F ( ω ) = ∫ − ∞ ∞ f ( t ) e − j ω t d t F(\omega)=\int^{\infty}_{-\infty}f(t)e^{-j\omega t}dt F(ω)=f(t)etdt

对比CFT,我们可以看到DTFT和CFT的差别在于,一个自变量是 n n n,一个自变量是 t t t,一个是非连续一个是连续。所以二者对比:

  • 连续信号:在CFT中,频率是连续变量,频谱 F ( ω ) F(\omega) F(ω)对应的是一个实数角频率 ω \omega ω,直接描述频率分量。
  • 离散信号: 在 DTFT ( 包括DFT) 中,由于信号是离散的,频谱的周期性引入了单位圆上的频率表示。对于 X ( ω ) X(\omega) X(ω)写作 X ( e j ω ) X(e^{j\omega}) X(e),所以DTFT写作为:
    X ( e j ω ) = ∑ n = − ∞ ∞ x [ n ] e − j ω n X(e^{j\omega})=\sum_{n=-\infty}^{\infty}x[n]e^{-j\omega n} X(e)=n=x[n]ejωn

2.DTFT右边释义

对于DTFT右边 ∑ n = − ∞ ∞ x [ n ] e − j ω n \sum_{n=-\infty}^{\infty}x[n]e^{-j\omega n} n=x[n]ejωn我们来一步步分析这个公式的作用。

1) 复指数 e − j ω n e^{-j\omega n} ejωn

上一篇文章中,我们用欧拉公式将极坐标表示为复指数形式:
e j θ = cos ⁡ ( θ ) + j sin ⁡ ( θ ) e^{j\theta}=\cos(\theta)+j\sin(\theta) ejθ=cos(θ)+jsin(θ)
由此可以得到
e − j ω n = > cos ⁡ ( j ω n ) − j s i n ( ω n ) e^{-j\omega n}=>\cos(j\omega n)-jsin(\omega n) ejωn=>cos(jωn)jsin(ωn)

  • 实部: cos ⁡ ( j ω n ) \cos(j\omega n) cos(jωn)是以频率 ω \omega ω的余弦震荡
  • 虚部: s i n ( ω n ) sin(\omega n) sin(ωn)是以频率 ω \omega ω的正弦震荡

它表示的含义是随着 n n n的增长,以频率 ω \omega ω在一个单位圆上以顺时针方式进行周期震荡,如下图:

  • n n n代表时间 t t t [ 0 , 5 ] [0,5] [0,5]区间上的变换
  • Z Z Z的指向是极坐标
  • I m Im Im是虚部比变化
  • R e Re Re是实部变化
    在这里插入图片描述

2)序列与复指数相乘 x [ n ] ∗ e − j ω n x[n]*e^{-j\omega n} x[n]ejωn

复指数序列

在上一篇文章中,我们说 z = r ∗ e i θ z=r*e^{i\theta} z=reiθ表示了极坐标的旋转, r r r代表了模长,而 x [ n ] ∗ e − j ω n x[n]*e^{-j\omega n} x[n]ejωn x [ n ] x[n] x[n]可以是实数和虚数,所以对于 x [ n ] ∗ e − j ω n x[n]*e^{-j\omega n} x[n]ejωn值得注意的是,应该理解为对于 x [ n ] x[n] x[n]进行旋转 − ω n -\omega n ωn角度,而不是理解为模长。

而对于整个 x [ n ] x[n] x[n]的旋转,我们得到的是对于以某一个频率 ω \omega ω旋转了 − ω n -\omega n ωn角度的新的序列,这就叫做复指数序列。其中对于 e − j ω n e^{-j\omega n} ejωn我们看作是对于复指数序列的基函数。

复数的共轭

对于一个复数 z = a + b i z=a+bi z=a+bi,它的共轭复数为 z ‾ = a − b i \overline{z}=a-bi z=abi

  • 复数共轭的几何意义是以实轴为对称轴反射。
  • 共轭复数在许多计算中很重要,例如求复数的模: ∣ z ∣ = z ∗ z ‾ |z|=\sqrt{z*\overline{z}} z=zz ,展开来为:
    ( a + b i ) ∗ a ( − b i ) = a 2 − a b i + a b i − b 2 ∗ i 2 , ( i 2 = − 1 ) = > a 2 + b 2 (a+bi)*a(-bi)=a^2-abi+abi-b^2*i^2,\quad (i^2=-1)=>a^2+b^2 (a+bi)a(bi)=a2abi+abib2i2,(i2=1)=>a2+b2

复数空间的内积使用了共轭来确保以下性质:

  • 共轭对称性
    < f , g > = < g , f > ‾ <f,g>=\overline{<g,f>} <f,g>=<g,f>
  • 非负性
    < f , f > ≥ 0 <f,f> \geq 0 <f,f>≥0
正交

正交:在数学中,正交(orthogonality)通常用于描述两个向量或函数之间的一种关系,表示它们彼此垂直或互不相关。

  • 向量正交:在欧几里得空间中,两个向量 u , v u,v u,v 如果它们的内积为 0,则称它们是正交的,即: u ∗ v = 0 u*v=0 uv=0
  • 函数正交:两个函数 f ( x ) , g ( x ) f(x),g(x) f(x),g(x)在区间 [ a , b ] [a,b] [a,b]上内积为0,表示为函数正交,即: < f , g > = ∫ a b f ( x ) g ( x ) ∗ d x = 0 <f,g>=\int_a^bf(x)g(x)^*dx =0 <f,g>=abf(x)g(x)dx=0

正交意味着在平面上,角度为90°,例如 ( 1 , i ) , ( 1 , − i ) (1,i),(1,-i) (1,i),(1,i)
在这里插入图片描述

正交集

正交集是由一组两两正交的向量或函数组成的集合。在这种集合中,任意两个不同的元素的内积为 0。而对于复指数序列的基函数 e − j ω n e^{-j\omega n} ejωn则有:
< e − j ω l n , e − j ω m n > = ∑ n = 0 N − 1 e − j ω l n ∗ ( e − j ω m n ) ∗ ( e − j ω m n ) ∗ = e j ω m n , 由于复共轭 < e − j ω l n , e − j ω m n > = ∑ n = 0 N − 1 e − j ω l n ∗ e j ω m n = > ∑ n = 0 N − 1 e j ( ω m − ω l ) n <e^{-j\omega_l n}, e^{-j\omega_m n}>=\sum_{n=0}^{N-1}e^{-j\omega_l n}* (e^{-j\omega_m n})^*\\ (e^{-j\omega_m n})^*=e^{j\omega_m n},\quad 由于复共轭 \\ <e^{-j\omega_l n}, e^{-j\omega_m n}>=\sum_{n=0}^{N-1}e^{-j\omega_l n}*e^{j\omega_m n} =>\\ \sum_{n=0}^{N-1}e^{j(\omega_m-\omega_l)n} <ejωln,ejωmn>=n=0N1ejωln(ejωmn)(ejωmn)=ejωmn,由于复共轭<ejωln,ejωmn>=n=0N1ejωlnejωmn=>n=0N1ej(ωmωl)n
ω m ≠ ω l \omega_m\neq \omega_l ωm=ωl时, e j ( ω m − ω l ) n e^{j(\omega_m-\omega_l)n} ej(ωmωl)n表示的是一个周期性复数,几何上表示在复平面上绕原点画圆,如同上文中对于 e − j ω n e^{-j\omega n} ejωn解释的图像,所以对于累加和 ∑ n = 0 N − 1 e j ( ω m − ω l ) n \sum_{n=0}^{N-1}e^{j(\omega_m-\omega_l)n} n=0N1ej(ωmωl)n为0。

也就是说对于任意复指数序列的基函数,当 ω m ≠ ω l \omega_m\neq \omega_l ωm=ωl时,两者之间相互不影响,这也正是DTFT使用复指数来进行运算的原因!

3)复指数序列求和

DTFT右边对于复指数序列为什么要进行求和,即 ∑ n = − ∞ ∞ x [ n ] e − j ω n \sum_{n=-\infty}^{\infty}x[n]e^{-j\omega n} n=x[n]ejωn

上面我们说了对于任意复指数序列的基函数,当 ω m ≠ ω l \omega_m\neq \omega_l ωm=ωl时,两者之间相互不影响。所以对于 x [ n ] ∗ e − j ω n x[n]*e^{-j\omega n} x[n]ejωn中,对于某一个 ω k \omega_k ωk x [ n ] ∗ e − j ω k n x[n]*e^{-j\omega_k n} x[n]ejωkn中,将不会包含其他频率的影响。

在欧几里得空间中,投影的定义是: 投影 = < v ∗ u > u 投影=<v*u>u 投影=<vu>u,其中

  • v v v 是要投影的向量
  • u u u是基向量
  • ⟨ v , u ⟩ ⟨v,u⟩ v,u 是内积,量化了 v v v u u u的相似程度

而对于复指数序列投影,则有:
< x [ n ] , e − j ω n > = ∑ n = − ∞ ∞ x [ n ] ∗ e − j ω n ‾ e − j ω n ‾ = e j ω n 共轭性 < x [ n ] , e − j ω n > = ∑ n = − ∞ ∞ x [ n ] e − j ω n <x[n],e^{-j\omega n}>=\sum_{n=-\infty}^{\infty}x[n]*\overline{e^{-j\omega n}} \\ \overline{e^{-j\omega n}} =e^{j\omega n} 共轭性\\ <x[n],e^{-j\omega n}> =\sum_{n=-\infty}^{\infty}x[n]e^{-j\omega n} <x[n],ejωn>=n=x[n]ejωnejωn=ejωn共轭性<x[n],ejωn>=n=x[n]ejωn
其实就是DTFT函数,它的目的就是为了不同频率之间的影响。即如果 < x [ n ] , e − j ω k n > = ∑ n = − ∞ ∞ x [ n ] e − j ω k n = 0 <x[n],e^{-j\omega_k n}> =\sum_{n=-\infty}^{\infty}x[n]e^{-j\omega_k n}=0 <x[n],ejωkn>=n=x[n]ejωkn=0,那么序列 x [ n ] x[n] x[n]对于频率 ω k \omega_k ωk没有影响。

3.DTFT左边边释义

1)实部与虚部

上文中解释了DTFT函数的由来,即 ∑ n = − ∞ ∞ x [ n ] e − j ω n \sum_{n=-\infty}^{\infty}x[n]e^{-j\omega n} n=x[n]ejωn可以看作是对信号进行“投影”,找出信号与每个频率基函数的匹配程度。那么如果
< x [ n ] , e − j ω k n > = ∑ n = − ∞ ∞ x [ n ] e − j ω k n ≠ 0 <x[n],e^{-j\omega_k n}> =\sum_{n=-\infty}^{\infty}x[n]e^{-j\omega_k n}\neq 0 <x[n],ejωkn>=n=x[n]ejωkn=0这个值我们表示为 X ( ω k ) X(\omega_k) X(ωk)有什么含义?或者说有什么作用?

我们知道对于欧拉公式:
e j θ = cos ⁡ ( θ ) + j sin ⁡ ( θ ) e^{j\theta}=\cos(\theta)+j\sin(\theta) ejθ=cos(θ)+jsin(θ)
它的实部表示了相位(两波之间的时间或空间偏移),虚部表示了幅度,那么对于DTFT公式:
X ( e j ω ) = ∑ n = − ∞ ∞ x [ n ] e − j ω n X(e^{j\omega})=\sum_{n=-\infty}^{\infty}x[n]e^{-j\omega n} X(e)=n=x[n]ejωn
其中复指数通过欧拉公式得到
e − j ω n = cos ⁡ ( ω n ) − j sin ⁡ ( ω n ) e^{-j\omega n}=\cos(\omega n)-j\sin(\omega n) ejωn=cos(ωn)jsin(ωn)
因此DTFT可以拆解为:
X ( e j ω ) = ∑ n = − ∞ ∞ x [ n ] ( cos ⁡ ( ω n ) − j sin ⁡ ( ω n ) ) X ( e j ω ) = ∑ n = − ∞ ∞ x [ n ] cos ⁡ ( ω n ) ⏟ R e ( X ( e j ω ) ) − ∑ n = − ∞ ∞ x [ n ] j sin ⁡ ( ω n ) ⏟ I e ( X ( e j ω ) ) X(e^{j\omega})=\sum_{n=-\infty}^{\infty}x[n](\cos(\omega n)-j\sin(\omega n)) \\ X(e^{j\omega})=\underbrace{\sum_{n=-\infty}^{\infty}x[n]\cos(\omega n)}_{Re(X(e^{j\omega}))}-\underbrace{\sum_{n=-\infty}^{\infty}x[n]j\sin(\omega n)}_{Ie(X(e^{j\omega}))} X(e)=n=x[n](cos(ωn)jsin(ωn))X(e)=Re(X(e)) n=x[n]cos(ωn)Ie(X(e)) n=x[n]jsin(ωn)

  • R e ( X ( e j ω ) Re(X(e^{j\omega}) Re(X(e)是实部
  • I m ( X ( e j ω ) Im(X(e^{j\omega}) Im(X(e)是虚部

2)幅度与相位

  • 幅度:幅度是频谱中每个频率分量的强度或大小,实部和虚部的模长,可以得出该频率分量的幅度。使用 ∣ X ( e j ω ) ∣ |X(e^{j\omega})| X(e)表示信号在频率 ω \omega ω处的能量强度或振幅
    ∣ X ( e j ω ) ∣ = R e ( X ( e j ω ) 2 + I m ( X ( e j ω ) 2 |X(e^{j\omega})|=\sqrt{Re(X(e^{j\omega})^2+Im(X(e^{j\omega})^2} X(e)=Re(X(e)2+Im(X(e)2
  • 相位:相位是频谱中每个频率分量相对于其他频率分量的相位偏移,通过实部和虚部的比值,可以计算相位。使用 arg ⁡ ( X ( e j ω ) ) 或 ∠ ( X ( e j ω ) ) \arg(X(e^{j\omega}))或\angle(X(e^{j\omega})) arg(X(e))(X(e))表示:
    ∠ ( X ( e j ω ) ) = tan ⁡ − 1 I m ( X ( e j ω ) R e ( X ( e j ω ) \angle(X(e^{j\omega}))=\tan^{-1}\frac{Im(X(e^{j\omega})}{Re(X(e^{j\omega})} (X(e))=tan1Re(X(e)Im(X(e)

二、IDTFT

1.逆离散时间的傅里叶变换

上文中我们使用的傅里叶变换将序列从时域转成了频域,那么从频域恢复到时域我们成为逆傅里叶变换,逆离散时间的傅里叶变换表示为IDTFT。
在这里插入图片描述
它的公式为:
x [ n ] = 1 2 π ∫ − π π X ( e j ω ) e j ω n d ω x[n]=\frac{1}{2\pi}\int_{-\pi}^{\pi}X(e^{j\omega})e^{j\omega n}d\omega x[n]=2π1ππX(e)ejωndω

2.IDTFT验证

我们将 X ( e j ω ) X(e^{j\omega}) X(e)代入到公式中:
x [ n ] = 1 2 π ∫ − π π ( ∑ k = − ∞ ∞ x [ k ] e − j ω k ) e j ω n d ω x[n]=\frac{1}{2\pi}\int_{-\pi}^{\pi}\big(\sum_{k=-\infty}^{\infty}x[k]e^{-j\omega k}\big)e^{j\omega n}d\omega x[n]=2π1ππ(k=x[k]ejωk)ejωndω
根据之前文章积分和求和的特性
x [ n ] = ∑ k = − ∞ ∞ x [ k ] ( 1 2 π ∫ − π π e − j ω ( n − k ) d w ) x[n]=\sum_{k=-\infty}^{\infty}x[k]\big(\frac{1}{2\pi}\int_{-\pi}^{\pi}e^{-j\omega (n-k)}dw\big) x[n]=k=x[k](2π1ππe(nk)dw)
先看积分项
1 2 π ∫ − π π e − j ω ( n − k ) d w \frac{1}{2\pi}\int_{-\pi}^{\pi}e^{-j\omega (n-k)}dw 2π1ππe(nk)dw

  • k = n k=n k=n时:
    1 2 π ∫ − π π e − j ω ( n − k ) d w = 1 2 π ∫ − π π 1 d w = 1 \frac{1}{2\pi}\int_{-\pi}^{\pi}e^{-j\omega (n-k)}dw=\frac{1}{2\pi}\int_{-\pi}^{\pi}1dw=1 2π1ππe(nk)dw=2π1ππ1dw=1
  • k ≠ n k\neq n k=n时,上文中说过,因为 e j ( ω m − ω l ) n e^{j(\omega_m-\omega_l)n} ej(ωmωl)n表示的是一个周期性复数,其积分结果为零:
    1 2 π ∫ − π π e − j ω ( n − k ) d w = 1 2 π ∗ 0 = 0 \frac{1}{2\pi}\int_{-\pi}^{\pi}e^{-j\omega (n-k)}dw=\frac{1}{2\pi}*0=0 2π1ππe(nk)dw=2π10=0

因此
1 2 π ∫ − π π e − j ω ( n − k ) d w = { 1 , n = k 0 , n ≠ k \frac{1}{2\pi}\int_{-\pi}^{\pi}e^{-j\omega (n-k)}dw=\begin{cases}1,\quad n=k \\ 0,\quad n\neq k\end{cases} 2π1ππe(nk)dw={1,n=k0,n=k
我们用单位脉冲 δ \delta δ表示0,1,所以可以得到
x [ n ] = ∑ k = − ∞ ∞ x [ k ] δ [ n − k ] x[n]=\sum_{k=-\infty}^{\infty}x[k]\delta[n-k] x[n]=k=x[k]δ[nk]
有没有看起来很熟悉,这不就是冲激分解,使用单位冲激序列表示的加权和


总结

本篇文章中,我们对于DTFT做了深入的了解,附带着介绍了一些使用的数学知识,同时得到了IDTFT的公式。受到篇幅限制,本章只对DTFT公式进行了展示,并没有深入了解DTFT存在的条件和性质,那么在下一篇文章中会进行进一步介绍DTFT相关性质和条件。

如果对您有所帮助,请帮忙点个赞吧!

相关文章:

音频进阶学习九——离散时间傅里叶变换DTFT

文章目录 前言一、DTFT的解释1.DTFT公式2.DTFT右边释义1&#xff09; 复指数 e − j ω n e^{-j\omega n} e−jωn2&#xff09;序列与复指数相乘 x [ n ] ∗ e − j ω n x[n]*e^{-j\omega n} x[n]∗e−jωn复指数序列复数的共轭正交正交集 3&#xff09;复指数序列求和 3.DTF…...

连接github和ai的桥梁:GitIngest

Git ingest GitIngest - 将任何 Github 仓库转变为适合 LLM 的友好型提示文本 (https://github.com/cyclotruc/gitingest) 输入 Github 地址或者名称&#xff0c;GitIngest 就会提供该仓库的总结、目录结构、仓库内容的文本内容 你可以复制这些文本与 AI 大模型更好地对话...

Pytorch使用手册-DCGAN 指南(专题十四)

1. Introduction 本教程将通过一个示例介绍 DCGANs(深度卷积生成对抗网络)。我们将训练一个生成对抗网络(GAN),在给它展示大量真实名人照片后,它能够生成新的“名人”图片。这里的大部分代码来源于 PyTorch 官方示例中的 DCGAN 实现,而本文档将对该实现进行详细解释,并…...

Flume的安装和使用

一、安装Flume 1. 下载flume-1.7.0 http://mirrors.shu.edu.cn/apache/flume/1.7.0/apache-flume-1.7.0-bin.tar.gz 2. 解压改名 tar xvf apache-flume-1.7.0-bin.tar.gz mv apache-flume-1.7.0-bin flume 二、配置Flume 1. 配置sh文件 cp conf/flume-env.sh.template …...

[Hive]七 Hive 内核

1. Hive架构 Hive架构主要包括&#xff1a; 用户界面&#xff1a;命令行&#xff08;CLI&#xff09;和web UIThrift Server&#xff1a;公开了一个非常简单的客户端执行HiveQL语句的API&#xff0c;包括JDBC&#xff08;Java&#xff09;和ODBC&#xff08;C&#xff09;&…...

Druid密码错误重试导致数据库超慢

文章目录 密码错误重试导致数据库超慢如何避免呢&#xff1f; 密码错误重试导致数据库超慢 有同事把项目的数据库密码配错了&#xff0c;导致其他所有连接该数据库的项目全部连接都获取缓慢了&#xff0c;一个页面加载要花费十几秒。排查mysql连接发现很多connect命令的连接 …...

Ubuntu 24.04安装和使用WPS 2019

为Ubuntu找一款免费、功能丰富的 Microsoft Office 替代品&#xff1f;WPS Office是理想选择&#xff01;在本文中&#xff0c;包含在Ubuntu上安装 WPS Office&#xff0c;修复初次使用出现问题的修复。 安装WPS&#xff0c;参考链接>>How to Install WPS Office on Ubu…...

week05_nlp大模型训练·词向量文本向量

1、词向量训练 1.1 CBOW&#xff08;两边预测中间&#xff09; 一、CBOW 基本概念 CBOW 是一种用于生成词向量的方法&#xff0c;属于神经网络语言模型的一种。其核心思想是根据上下文来预测中心词。在 CBOW 中&#xff0c;输入是目标词的上下文词汇&#xff0c;输出是该目标…...

【RabbitMQ消息队列原理与应用】

RabbitMQ消息队列原理与应用 一、消息队列概述 &#xff08;一&#xff09;概念 消息队列&#xff08;Message Queue&#xff0c;简称MQ&#xff09;是一种应用程序间的通信方式&#xff0c;它允许应用程序通过将消息放入队列中&#xff0c;而不是直接调用其他应用程序的接口…...

反欺诈风控体系及策略

本文详细介绍了互联网领域金融信贷行业的反欺诈策略。首先&#xff0c;探讨了反欺诈的定义、重要性以及在当前互联网发展背景下欺诈风险的加剧。接着&#xff0c;分析了反欺诈的主要手段和基础技术&#xff0c;包括对中介和黑产的了解、欺诈风险的具体类型和表现方式&#xff0…...

Mac 12.1安装tiger-vnc问题-routines:CRYPTO_internal:bad key length

背景&#xff1a;因为某些原因需要从本地mac连接远程linxu桌面查看一些内容&#xff0c;必须使用桌面查看&#xff0c;所以ssh无法满足&#xff0c;所以决定安装vnc客户端。 问题&#xff1a; 在mac上通过 brew install tiger-vnc命令安装, 但是报错如下&#xff1a; > D…...

【代码分析】Unet-Pytorch

1&#xff1a;unet_parts.py 主要包含&#xff1a; 【1】double conv&#xff0c;双层卷积 【2】down&#xff0c;下采样 【3】up&#xff0c;上采样 【4】out conv&#xff0c;输出卷积 """ Parts of the U-Net model """import torch im…...

【LLM入门系列】01 深度学习入门介绍

NLP Github 项目&#xff1a; NLP 项目实践&#xff1a;fasterai/nlp-project-practice 介绍&#xff1a;该仓库围绕着 NLP 任务模型的设计、训练、优化、部署和应用&#xff0c;分享大模型算法工程师的日常工作和实战经验 AI 藏经阁&#xff1a;https://gitee.com/fasterai/a…...

安卓系统主板_迷你安卓主板定制开发_联发科MTK安卓主板方案

安卓主板搭载联发科MT8766处理器&#xff0c;采用了四核Cortex-A53架构&#xff0c;高效能和低功耗设计。其在4G网络待机时的电流消耗仅为10-15mA/h&#xff0c;支持高达2.0GHz的主频。主板内置IMG GE832 GPU&#xff0c;运行Android 9.0系统&#xff0c;内存配置选项丰富&…...

关键点检测——HRNet原理详解篇

&#x1f34a;作者简介&#xff1a;秃头小苏&#xff0c;致力于用最通俗的语言描述问题 &#x1f34a;专栏推荐&#xff1a;深度学习网络原理与实战 &#x1f34a;近期目标&#xff1a;写好专栏的每一篇文章 &#x1f34a;支持小苏&#xff1a;点赞&#x1f44d;&#x1f3fc;、…...

25考研总结

11408确实难&#xff0c;25英一直接单科斩杀&#x1f62d; 对过去这一年多备考的经历进行复盘&#xff0c;以及考试期间出现的问题进行思考。 考408的人&#xff0c;政治英语都不能拖到最后&#xff0c;408会惩罚每一个偷懒的人&#xff01; 政治 之所以把政治写在最开始&am…...

网络安全态势感知

一、网络安全态势感知&#xff08;Cyber Situational Awareness&#xff09;是一种通过收集、处理和分析网络数据来理解当前和预测未来网络安全状态的能力。它的目的是提供实时的、安全的网络全貌&#xff0c;帮助组织理解当前网络中发生的事情&#xff0c;评估风险&#xff0c…...

在K8S中,节点状态notReady如何排查?

在kubernetes集群中&#xff0c;当一个节点&#xff08;Node&#xff09;的状态变为NotReady时&#xff0c;意味着该节点可能无法运行Pod或不能正确相应kubernetes控制平面。排查NotReady节点通常涉及以下步骤&#xff1a; 1. 获取基本信息 使用kubectl命令行工具获取节点状态…...

深度学习在光学成像中是如何发挥作用的?

深度学习在光学成像中的作用主要体现在以下几个方面&#xff1a; 1. **图像重建和去模糊**&#xff1a;深度学习可以通过优化图像重建算法来处理模糊图像或降噪&#xff0c;改善成像质量。这涉及到从低分辨率图像生成高分辨率图像&#xff0c;突破传统光学系统的分辨率限制。 …...

树莓派linux内核源码编译

Raspberry Pi 内核 托管在 GitHub 上&#xff1b;更新滞后于上游 Linux内核&#xff0c;Raspberry Pi 会将 Linux 内核的长期版本整合到 Raspberry Pi 内核中。 1 构建内核 操作系统随附的默认编译器和链接器被配置为构建在该操作系统上运行的可执行文件。原生编译使用这些默…...

XML Group端口详解

在XML数据映射过程中&#xff0c;经常需要对数据进行分组聚合操作。例如&#xff0c;当处理包含多个物料明细的XML文件时&#xff0c;可能需要将相同物料号的明细归为一组&#xff0c;或对相同物料号的数量进行求和计算。传统实现方式通常需要编写脚本代码&#xff0c;增加了开…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

(二)原型模式

原型的功能是将一个已经存在的对象作为源目标,其余对象都是通过这个源目标创建。发挥复制的作用就是原型模式的核心思想。 一、源型模式的定义 原型模式是指第二次创建对象可以通过复制已经存在的原型对象来实现,忽略对象创建过程中的其它细节。 📌 核心特点: 避免重复初…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下&#xff0c;江苏艾立泰以一场跨国资源接力的创新实践&#xff0c;重新定义了绿色供应链的边界。 跨国回收网络&#xff1a;废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点&#xff0c;将海外废弃包装箱通过标准…...

多模态大语言模型arxiv论文略读(108)

CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文标题&#xff1a;CROME: Cross-Modal Adapters for Efficient Multimodal LLM ➡️ 论文作者&#xff1a;Sayna Ebrahimi, Sercan O. Arik, Tejas Nama, Tomas Pfister ➡️ 研究机构: Google Cloud AI Re…...

[大语言模型]在个人电脑上部署ollama 并进行管理,最后配置AI程序开发助手.

ollama官网: 下载 https://ollama.com/ 安装 查看可以使用的模型 https://ollama.com/search 例如 https://ollama.com/library/deepseek-r1/tags # deepseek-r1:7bollama pull deepseek-r1:7b改token数量为409622 16384 ollama命令说明 ollama serve #&#xff1a…...

安卓基础(Java 和 Gradle 版本)

1. 设置项目的 JDK 版本 方法1&#xff1a;通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分&#xff0c;设置 Gradle JDK 方法2&#xff1a;通过 Settings File → Settings... (或 CtrlAltS)…...

云原生周刊:k0s 成为 CNCF 沙箱项目

开源项目推荐 HAMi HAMi&#xff08;原名 k8s‑vGPU‑scheduler&#xff09;是一款 CNCF Sandbox 级别的开源 K8s 中间件&#xff0c;通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度&#xff0c;为容器提供统一接口&#xff0c;实现细粒度资源配额…...

绕过 Xcode?使用 Appuploader和主流工具实现 iOS 上架自动化

iOS 应用的发布流程一直是开发链路中最“苹果味”的环节&#xff1a;强依赖 Xcode、必须使用 macOS、各种证书和描述文件配置……对很多跨平台开发者来说&#xff0c;这一套流程并不友好。 特别是当你的项目主要在 Windows 或 Linux 下开发&#xff08;例如 Flutter、React Na…...