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

谈谈FFT到底有何用

谈谈FFT到底有何用

FFT快速傅里叶变换是数字信号处理的经典算法,学过DSP或者芯片设计的人大多知道这个算法;但是,大家是否想过,为什么数字信号处理会有那么多FFT呢有人会说,为了分析信号的频谱;那么下边的问题就是,分析频谱对我们的日常需求,比如手机打电话,雷达测量速度和方向等等一些与实际需求有什么联系为什么FFT如此重要本文举一些简明的例子,阐释一下FFT到底有什么用;

先回忆一下FFT是什么;上世纪70年代之前,我们主要通过模拟电路来进行信号处理,比如大家熟悉的用二极管和电容进行AM调制信号的包络检波一样,随着数字系统的普及,我们可以用处理器或者数字电路更为精确的处理信号,比如我们做AM检波,实际上可以用载波把信号混频与余弦函数做乘法,再进行低通滤波,那么这个过程可以用数字电路的乘法器和FIR滤波器来做,FIR比二极管和电容构成的低通滤波器阶数高的多,性能自然更为理想,同时,由于数字电路易于做成集成电路,因此我们更多地是将原先的模拟信号比如麦克风的音频通过模拟-数字转换器,转换为数字值后进行处理;这样的系统有几个问题,一个是信号需要被采样,其次是信号被分成若干量阶;信号被采样,也就意味着我们得到的不是原先的连续的信号了,而是一个离散的一些采集的样点;那么对时域信号进行采样,必然造成频谱的周期化,如果原先频谱仅限于有限的带宽,那么周期化之后,只要周期大于原先的带宽,那么实际上没有混叠失真;而数字电路限制我们只能进行乘加等二进制域的计算,获得另一些离散的点,因此我们不得不将频谱也进行“采样”,频域的抽样导致时域上又周期化了,好在如果我们只取有限的长度,可以假定没采集的部分进行的是周期化延拓由于平稳系统认为信号可以分解为正余弦函数的组合,而正余弦函数是可以周期延拓的,所以这个假设没有问题,那么我们得到了时域和频域都是离散的周期延拓的点集;既然是周期延拓的,那么延拓的部分和主值区间靠近0的那个周期是重复的数值,因此我们只保留主值区间的部分,这样的时域点集到频域点集的变换关系叫离散傅里叶变换DFT;然而它的运算过于复杂,因此库里和图基Cooley, Tukey两人力图化简它,找到了这个算法的一些内在运算规律,得到的运算量由原来的平方级降为NlogN级,这个算法就叫按时间抽取快速傅里叶变换,桑德和图基研究按频率抽取也可以得到类似的低复杂度算法,这类算法统称快速傅里叶变换FFT,FFT的计算结果和DFT是完全等价的,只是运算量降低了;又由于时频变换能量不变Parseval定理,所以频域的绝对数值没有意义了,只要获得相对数值即可,因此数字系统中的量化阶数以及数字系统溢出后的缩放调整对FFT的计算结果影响仅在于精度,而不是对错,从而,FFT正好满足数字系统可以处理的前提,同时运算复杂度不高,因此获得了广泛的应用;那么,模拟系统能不能做类似的FFT呢可以,构造与频点数量相同个数的带通滤波器,组成一个阵列,信号进入这个带通滤波器组,每个滤波器只保留了相应频点为中心的类似于sinc的频响函数,那么就可以得到FFT的结果;当然,这个代价不是一般的系统可以负担的;所以,在没有数字电路普及的年代里,FFT基本是数学算法,是不可实现的;

现在知道FFT是什么了,它是傅里叶变换的时频离散后的可数字计算的一个变换算法,这个算法计算的对象是时域上周期延拓的点集的主值区间部分有限个数,计算的结果是频谱,也是周期延拓的点集的主值区间部分,与傅里叶变换等价的前提是采样速率大于信号最大频率的2倍高频延拓不混叠,同时时域有限长度之外的部分假定按周期延拓到无穷;为了满足第一个前提,我们往往在信号处理之前甚至是模数转换之前加入一个低通滤波器,使得高频分量被抑制,对于比如声音或者在某个频带内的通信系统,高频分量本身就是无意义的,因此这个前提可以满足;为了满足第二个前提,我们需要保证采集的样本在采集区外的数值与假想的周期延拓的数值一致,这显然做不到,做不到导致的结果是什么呢频谱出现泄漏,也就是频谱能量会分散到带外比如余弦不再是一根谱线,而是sinc,分散的过程可以看做时域加矩形窗和门函数相乘导致的,那么频谱相当于和sinc函数的卷积,时域窗越小也就是采集的点越少,频谱sinc的主瓣越宽,频谱泄露越严重,也就是原先一个频点的能量会被散发到更大的附近范围里,而自己的峰值会降低,如果相邻点各有个峰值,那么散发后就难以分辨了,所以系统的实际分辨率与时域窗的长度成反比,采集更多的点,才有可能获得更精细的频谱;那么,有没有办法减轻这个泄露呢那么,最好让边界处的取值点起的作用小一点,中间的部分权重大一点,那么实际上就乘了一系列加权的数值,这些数值形成的是一个时域的窗函数,加窗之后,频谱泄露会减轻,能量会集中一些,但是主瓣会更宽,这是一个权衡;就这样,两个前提条件得以近似满足,虽然不是完全,但是也够用了;

这些都是比较基础的知识了,下面说说有趣的事情;如果FFT只用于分析确定性的平稳信号,类似于正弦或者若干正弦的复合的无限长周期信号之类,看看谱线什么的,它将不会有今天的地位;它还能用来干嘛呢

1,做快速相关

相关在数字信号处理的重要程度可以说是炙手可热级别的;简单的讲,如果你不知道信号中的某个参数比如频率,或者相位,或者码片序列,或者成型波形,那么你就设计带有这个参数的所有可能值的一组信号跟它做一下相关,看看结果最大的那个,所对应的参数就是最有可能的了,这个算法叫做最大似然检测,相关往往作为最大似然检测的实际执行过程;而很多时候,这个需要被测量的参数是和时间延迟有关的,举个例子,手机开机后,要和基站同步,也就是说要知道每个数据帧开始的时刻,那么怎么得到呢首先基站和手机有一个协议,在帧的某个位置会有一个固定的序列,这个序列调制后会有一个固定的波形,那么手机就可以制造有若干延迟的波形副本,与接收到的波形相关,那么得到峰值所对应的延迟就可以换算出帧的起始时刻;有关相关的强大以后找机会再聊,那么相关和FFT有什么关系呢相关和卷积都是复杂度非常大的运算,每计算一个延迟下的相关值,都需要两个波形所有非零部分对应相乘并且加和得到,所有的延迟下相关值构成一条曲线,叫相关函数;而当把信号转换为频域后,获取相关函数的过程可以被简化成一个信号的共轭把虚部取反与另外一个信号相乘的过程;即使加上正负两个FFT的开销,算下来仍然比原来小很多N方和NlogN级的差别,这样一来,相关算法的复杂度被大大降低;那么有时候,输入的信号太长了,怎么办大家又发现相关操作可以分段进行,可以逐段相关最后拼合起来,就得到了相关后的结果;这样一来,手机的定时的操作可以用一个快速相关的过程搞定;再举个例子,雷达如果想定位一个目标的距离,怎么做呢最简单的想法是打一个冲击信号,看它什么时候回来,时延乘上光速除以2就是距离,但是,类似于冲激函数的波形对于功放来讲实在很难实现,因此雷达系统实际上打出去的是具有一定时间长度的带宽很大的信号,比如chirp或者某种成型,在接收时,我们需要知道这个信号被延迟了多少,因此把它和本地的成型波形副本进行相关,成功的相关操作会得到一个带有若干峰值点的波形,这些峰值点对应的位置就是若干目标的回波时延值,换算出来就是位置,这个将波形能量压缩到点的过程一般是采用FFT实现的;

2,快速卷积

类似与相关,信号处理的一大操作类型是卷积,一个系统可以采用系统函数来表征,其输出就是输入数据卷积上系统函数,或对于平稳的随机信号而言,输出为输入数据卷积上系统函数模值的平方;卷积操作常常用于对信号进行FIR滤波,因为FIR滤波器是不带反馈的,没有记忆,可以用卷积算法直接得到输出;那么,如果数据是块数据不是按时钟节拍的流数据,用快速卷积就可以降低运算量;其过程与快速相关雷同,区别是频域相乘时无需共轭;想一下,如果FM收音机收到好几个台,相互靠的很近,怎么办可以采用阶数比较高的FIR带通滤波器选出想要的那个台,例如德生的DSP芯片解调的收音机可以做到的分辨率,这就是现在我们的数字FM收音机比原来的模拟FM收音机音质好的原因之一;

3,经典谱估计

在实际的生活里,我们不可能见到的都是确定的无限长的正余弦类的叠加的信号,最起码这样的信号在传输过程中也会叠加上噪声,即高斯白噪声,因此傅里叶变换频谱分析的前提无法满足,这样的时频变换也就没有了实际意义,退一步,我们可以分析的往往是无限长的,随机的,但在随机意义上自相关等二阶统计特性上平稳的信号,如果达不到这个前提,起码可以在某个时间段内满足;这样的信号往往自身是随机的,但是自相关和互相关特性往往包含信号的二阶统计信息;而对于实际的系统,我们只能估计它,相关函数估计的一个基础方法是将一个信号和带有延迟并共轭后的另一个信号的点乘运算,得到的是基于延迟的函数;上文已述,用FFT就可以搞定它;

在这种随机信号的分析上,有一个重要的定理,叫做winner-khintchine定理,它证明了信号的自相关和信号的功率谱之间的关系是FFT变换;这个有意思的桥梁使得我们可以做几件事,一个是利用自相关的估计通过FFT得到功率谱,而自相关估计通过快速相关算法计算;细心的人会发现,这个流程最后一个FFT紧接IFFT,抵消后实际上只需要一个FFT,而不是三个,那么这样的功率谱估计叫周期图法功率谱估计,也是我们最经常使用的经典谱估计;值得注意的是,信号的功率谱实际上对应的是自相关的理想值,而不是通过接收到的数据得到的估计值上边用快速相关算的是估计值,这个估计如果采用了边界处的点,那么相关的数值由于假象边界外数值为0而造成了偏差,如果我们只利用中心的若干点,那么会相对准确一些,这个计算自相关后选取可靠的点,再进行傅里叶的做法叫做自相关法功率谱估计;最有趣的是,两个方法可以复合使用,先对数据分段交叠进行周期图估计,取这些结果的均值IFFT得到自相关,取自相关的加窗类似于上文的加权的作用得到更好的自相关估计,再FFT得到谱估计,这个方法是认为改进的比较好的经典谱估计,叫Welch法;这些方法之所以能够被接纳,主要是由于FFT的桥梁的作用;否则,这样的方法就无法应用到系统中了;频谱仪这类的仪器就可以采用这些经典谱估计算法当然也有扫频的;另外,由于功率谱的峰值的下标代表着信号的频率,如果这个信号是物体的反射回波,那么可以根据多普勒公式换算出物体的速度,一类采用这种测速机制的雷达叫脉冲多普勒雷达;

4,现代谱估计

为了取得更精确的谱估计,有些学者认为可以通过构造模型,并且设待定参数的方法,获得更好的谱估计,只要系统模型设计得合理,待定参数被估计得有效,那么对信号的谱估计可以转化为这个模型的谱,这样就可以得到更为精确的估计效果;这样的基于模型的谱估计叫现代谱估计;那么怎么叫合理呢大家认为欧式距离最小化比较合理,也就是最小均方准则,在这个准则下,加上线性系统的前提条件,那个有趣的平方的期望被转化为系统的自相关和互相关项Wiener-Hopf方程,而这两个项的估计方法,无需多问,也只能是采用快速相关完成比较有效,这就是FFT在有了现代谱估计,AR模型,MA模型等理论以后,仍能派上用场的一些原因;起码在计算上,自相关法是已知的AR参数估计方法中最简单的一种;估计出模型后,我们还可以做别的事情,比如根据模型来估计信号未来的趋势,叫做信号的预测,也可以对已经采集的信号通过这个模型进行平滑处理等等;再比如,如果想测量一个物体的方位怎么做在现代雷达中,一般会有一个天线阵列,如果接收到的物体的回波与天线阵列有个角度的话,那么不同的天线会接收到回波不同时刻不同相位,幅度基本不变的值,那么,可以利用若干天线的回波信号估计出若干目标物体的方位角度,叫做到达角DOA估计,有两个经典的算法:MUSIC和ESPRIT,他们都是二阶统计信号算法,依赖于自相关矩阵作为计算的起始,因而FFT可以作为自相关估计的快速算法;

5,构建正交系统

一个FFT得到的离散频谱和原先的连续频谱在离散点之间值遵循什么规律这些部分可以认为是一族正交的sinc函数叠加的结果,也可以认为是一个主瓣宽度为频谱间隔宽度的sinc函数与冲积函数串卷积的结果因为时域是矩形窗与原信号相乘的结果,此处的正交指的是一个离散点的值与另一个离散点的值没有关系,互不影响,这样的系统可以用来构建通信收发信机,由于采用sinc函数正交的效果是频谱效率最好的采用抑制带宽的办法虽然可以抑制每个子带的带外旁瓣,但是会造成时域信号的延拓,从而造成符号间干扰;正交频分复用OFDM正是利用了各个离散频点之间的正交特性构建了一个高性能低运算复杂度的收发机;其工作原理是首先将要发射的数据放置在各个频点上,一般采用QAM或PSK调制,之后IFFT得到时域信号发射出去,这些频点数据形成的时域发射波形实际上是一组频率倍数关系的正交余弦函数,接收机收到这样的信号后,再进行FFT,转换到频域或者说是正交域,从而得到每个频点上的传输的符号的估计;这个系统的巧妙之处在于克服了宽带无线通信系统的多径衰落,因为,从整个频带上看,信道不是一个常数,有的频点的数值增强了,有的减弱了,同时还有相位扭曲;但是当把它分成很多正交的子信道之后,这些信道内部可以看做为平坦的,那么通过均衡器,比如迫零均衡之后,我们就可以得到类似于冲击响应的子信道特性,从而解调出每个子信道符号的值;由于子信道之间正交,互不干扰,因此可以实现多载波通信,并行传输所有的数据,大大加快了传输速度,这也就是4G移动通信速度可以达到百兆甚至更高的核心技术之一;

如今,FFT运算能力已经成为处理器的性能标尺之一;比如一个TI C6000系列的高性能DSP处理器,可以在半个时钟输出一个数据点,那么可以做到几百兆比特每秒的处理速率;硬件的优化使得FFT已经成为信号处理算法内部的高速公路;FFT的意义可能远不止这些,而且也有许多的变种,比如二维FFT,DCT等等,在图像领域发挥着图像模糊清晰,轮廓化,压缩等贡献;本文只是一个引子,让致力于研究和开发数字系统的同行能够更清晰地理解系统的原理和算法的实质;所提及的内容都是信号处理的基础书籍,一般的硕士课程多有涉及,如此整理一番也算有点新意,希望对大家有所借鉴;

相关文章:

谈谈FFT到底有何用

谈谈FFT到底有何用 FFT快速傅里叶变换是数字信号处理的经典算法,学过DSP或者芯片设计的人大多知道这个算法;但是,大家是否想过,为什么数字信号处理会有那么多FFT呢有人会说,为了分析信号的频谱;那么下边的问题就是,分析频谱对我们的日常需求,比如手机打电话,雷达测量速度和方向…...

MATLAB | 如何绘制这样的描边散点图?

part.-1 前前言 最近略忙可能更新的内容会比较简单,见谅哇,今日更新内容: part.0 前言 看到gzhBYtools科研笔记(推荐大家可以去瞅瞅,有很多有意思的图形的R语言复现!!)做了这样一张图: 感觉很…...

偶数科技与白鲸开源完成兼容性认证

近日,偶数科技自主研发的云原生分布式数据库 OushuDB v5.0 完成了与白鲸开源集成调度工具 WhaleStudio v2.0 的兼容性相互认证测试。 测试结果显示,双方产品相互良好兼容,稳定运行、安全,同时可以满足性能需求,为企业级…...

【机器学习】Feature scaling and Learning Rate (Multi-variable)

Feature scaling and Learning Rate 1、数据集2、学习率2.1 α \alpha α 9.9e-72.2 α \alpha α 9e-72.3 α \alpha α 1e-7 3、特征缩放3.1 特征缩放的原因3.2 Z-score 归一化3.3 预测3.4 损失等值线 导入所需的库 import numpy as np np.set_printoptions(precision…...

windows编译ncnn

官方代码https://github.com/Tencent/ncnn/wiki/how-to-build#build-for-windows-x64-using-visual-studio-community-2017 编译工具 visual studio 2017 一、编译protobuf 1、下载protobuf protobuf-3.11.2:https://github.com/google/protobuf/archive/v3.11…...

C++和Lua交互总结

C和Lua交互总结 Chapter1. C和Lua交互总结一、Lua与C的交互机制——Lua堆栈二、堆栈的操作三、C 调用 Lua1)C获取Lua值2)C调用Lua函数示例: 四、Lua 调用 C包装C函数 最后总结一下 Chapter1. C和Lua交互总结 原文链接:https://bl…...

nvm安装和切换node版本

1、nvm list查看已安装的node版本 2、查看当前使用的npm和node版本 3、安装某版本的node 4、 切换node版本...

每日一题8.2 2536

2536. 子矩阵元素加 1 给你一个正整数 n ,表示最初有一个 n x n 、下标从 0 开始的整数矩阵 mat ,矩阵中填满了 0 。 另给你一个二维整数数组 query 。针对每个查询 query[i] [row1i, col1i, row2i, col2i] ,请你执行下述操作:…...

适配器模式(Adapter)

适配器模式用于将一个接口转换成用户希望的另一个接口,适配器模式使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。 Adapter is a structural design pattern that…...

Spring学习笔记——1

Spring学习笔记——1 一、Spring入门1.1、学习路线1.2、传统Javaweb开发困惑及解决方法1.3、三种思想的提出和框架概念1.3.1、IoC、DI和AOP思想提出1.3.2、框架的基本特点 1.4、Spring概述1.5、BeanFactory快速入门1.6、ApplicationContext快速入门1.7、BeanFactory与Applicati…...

leetcode 406. 根据身高重建队列

2023.8.2 这题一开始有点让人懵逼的是有两个维度,一个是身高,还一个是前面人高于自己的人数。这种题一般需要先固定一个维度,再去确定另外一个维度,不要想着兼顾。 经过纸上模拟,我的思路是先通过身高进行从大到小排序…...

Matlab实现AGNES算法

在数据分析和机器学习中,聚类是一种常用的无监督学习方法,它可以将数据点按照某种相似度标准进行分组,从而发现数据中的结构和模式。聚类算法有很多种,其中一种比较经典的是AGNES算法,它是一种基于层次的聚类算法&…...

STM32F4_外部SRAM

目录 前言 1. SRAM控制原理 1.1 SRAM功能框图 1.2 SRAM读写时序 2. FSMC简介 2.1 FSMC架构 2.2 FSMC地址映射 2.3 FSMC控制SRAM时序 3. FSMC结构体 4. 库函数配置FSMC 5. 实验程序 5.1 main.c 5.2 SRAM.c 5.3 SRAM.h 前言 STM32F4自带了192K字节的SRAM&#xff1…...

Java的代理模式

java有三种代理模式 静态代理 jdk动态代理 cglib实现动态代理 代理模式的定义: 为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的…...

FilterAttributeOnClassMethod

目录 1 BadMethodFilterAttribute 2 FilterAttributeOnClassMethod 2.1 OnMethodExecuted 2.2 OnMethodExecutedAsync 2.3 OnMethodExecuting BadMethodFilterAttribute using System; using System.Threading.Tasks; namespace Flatwhite.Core.Tests.Attributes …...

springboot + (mysql/pgsql) + jpa 多数据源(不同类数据源)

配置文件: spring:datasource:primary:jdbc-url: jdbc:mysql://host:3306/数据库?useUnicodetrue&characterEncodingUTF-8&autoReconnecttrue&failOverReadOnlyfalse&serverTimezoneAsia/Shanghai&zeroDateTimeBehaviorconvertToNullusername…...

【Golang】Golang进阶系列教程--Go 语言 context 都能做什么?

文章目录 前言核心是 Context 接口:包含四个方法:遵循规则WithCancelWithDeadlineWithTimeoutWithValue 前言 很多 Go 项目的源码,在读的过程中会发现一个很常见的参数 ctx,而且基本都是作为函数的第一个参数。 为什么要这么写呢…...

画图干货!14种uml图类型及示例

1. 什么是 UML UML 是统一建模语言的缩写。UML 图是基于 UML(统一建模语言)的图表,目的是直观地表示系统及其主要参与者、角色、动作、工件或类,以便更好地理解、更改、维护或记录信息关于系统。简而言之,UML 是一种…...

计算机视觉实验:人脸识别系统设计

实验内容 设计计算机视觉目标识别系统,与实际应用有关(建议:最终展示形式为带界面可运行的系统),以下内容选择其中一个做。 1. 人脸识别系统设计 (1) 人脸识别系统设计(必做):根据…...

振弦采集仪完整链条的岩土工程隧道安全监测

振弦采集仪完整链条的岩土工程隧道安全监测 隧道工程是一种特殊的地下工程,其建设过程及运行期间,都受到各种内外力的作用,如水压、地震、地质变形、交通荷载等,这些因素都会对隧道的安全性产生影响。因此,对隧道的安…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 ​ 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...

全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比

目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...

2025季度云服务器排行榜

在全球云服务器市场,各厂商的排名和地位并非一成不变,而是由其独特的优势、战略布局和市场适应性共同决定的。以下是根据2025年市场趋势,对主要云服务器厂商在排行榜中占据重要位置的原因和优势进行深度分析: 一、全球“三巨头”…...

【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制

使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下,限制某个 IP 的访问频率是非常重要的,可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案,使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...

MinIO Docker 部署:仅开放一个端口

MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...

DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态

前言 在人工智能技术飞速发展的今天,深度学习与大模型技术已成为推动行业变革的核心驱动力,而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心,系统性地呈现了两部深度技术著作的精华:…...