音频进阶学习十一——离散傅里叶级数DFS

文章目录


前言

按照傅里叶发展的历史,最先出现的傅里叶公式是傅里叶级数,只不过由于通用性以及核心理论先介绍了DTFT,它描述的是一个连续的频谱,描述了信号在整个频率范围内的频率成分。

对于本章内容离散傅里叶级数DFS,它描述的是离散的频谱,频率成分在周期上重复,本文将深入解析DFS的公式,并对IDFS进行推导,最后会对DFS的性质结合图像进行介绍。

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


一、傅里叶级数

1.定义

傅里叶级数简称为FS,是由法国数学家傅里叶为了进行热解析提出来的——周期信号表示为不同频率的正弦和余弦波的和。它能够将一个复杂的周期函数分解为一系列简单的正弦和余弦函数,从而实现信号的频域分析。

2.周期信号序列

离散周期序列指的是时间域上以固定周期重复出现的离散信号,使用 x ~ [ n ] \tilde{x}[n] x~[n]表示,即:
x ~ [ n ] = x ~ [ n + r T ] , r ∈ Z \tilde{x}[n]=\tilde{x}[n+rT],\quad r\in Z x~[n]=x~[n+rT],rZ
如下图, T = 10 T=10 T=10的周期序列
在这里插入图片描述

3.表达式

DFS

X ~ [ k ] = ∑ n = 0 N − 1 e j ( − 2 π k n N ) x ~ [ n ] \tilde{X}[k]=\sum_{n=0}^{N-1}e^{j(\frac{-2\pi kn}{N})}\tilde{x}[n] X~[k]=n=0N1ej(N2πkn)x~[n]

IDFS

x ~ [ n ] = 1 N ∑ k = 0 N − 1 e j ( 2 π k n N ) X ~ [ k ] \tilde{x}[n]=\frac{1}{N}\sum_{k=0}^{N-1}e^{j(\frac{2\pi kn}{N})}\tilde{X}[k] x~[n]=N1k=0N1ej(N2πkn)X~[k]

参数含义

  • ~:表示为周期序列
  • X ~ [ k ] \tilde{X}[k] X~[k]: 是信号在频域中的分量(傅里叶系数)
  • x ~ [ n ] \tilde{x}[n] x~[n]:是时间域中的周期离散信号
  • N N N:是序列周期
  • k k k:表示频率索引
  • e j ( − 2 π k n N ) e^{j(\frac{-2\pi kn}{N})} ej(N2πkn):复指数,表示信号的频率分量

4.DFS公式解析

1)右边解析

和上一篇解析DTFT一样,我们先解析DFS右边,在此之前,如果对于复指数序列和正交不太理解的同学,还是需要先看音频进阶学习九——离散时间傅里叶变换DTFT这篇文章,里面有对于为什么需要把序列转换成复指数序列的详细解释。
∑ n = 0 N − 1 e j ( − 2 π k n N ) x ~ [ n ] \sum_{n=0}^{N-1}e^{j(\frac{-2\pi kn}{N})}\tilde{x}[n] n=0N1ej(N2πkn)x~[n]

T T T f f f ω \omega ω的关系

我们来梳理一下周期、频率和角频率的关系

  • 频率:指的是某个周期性事件在单位时间内发生的次数, f = 1 T f=\frac{1}{T} f=T1
  • 周期:是一个周期性信号或事件完成一次完整波动所需的时间, T = 1 f T=\frac{1}{f} T=f1
  • 角频率:表示波动或振动的“速率”,即信号的变化速度, ω = 2 π f = 2 π T \omega = 2\pi f=\frac{2\pi}{T} ω=2πf=T2π
求和公式N的释义

上文中提到 N N N是序列周期,并且根据DFS公式也很容易看出来,对于序列的求和范围 n ∈ [ N − 1 ] n \in [N-1] n[N1],也就是序列的长度为 N N N

T T T f f f ω \omega ω的关系,我们得到 ω = 2 π f = 2 π T = 2 π N \omega = 2\pi f=\frac{2\pi}{T} = \frac{2\pi}{N} ω=2πf=T2π=N2π,也就是该周期序列的基波(一个波形的最低频率,是波形的基本振动频率)为 2 π N \frac{2\pi}{N} N2π

求和公式K的释义

对于DFS来说,一个周期序列分解为不同频率的正弦和余弦波的和,从上文中 N N N的作用我们首先得到了基波的频率,那么其他频率怎么来表示呢? 我们知道对于谐波是基频的整数倍频率,例如2倍频(第二谐波)、3倍频(第三谐波)等,而谐波和基波组成了周期序列。

对于 k k k代表了频率索引,即:
2 π N k , k ∈ [ 0 , 1 , 2 , . . . . , N − 1 ] \frac{2\pi}{N}k,k\in[0,1,2,....,N-1] N2πkk[0,1,2,....,N1]

  • k = 0 k=0 k=0时,表示的是直波
  • k = 1 k=1 k=1时,表示的是基波(第一谐波)
  • k = 2 k=2 k=2时,表示的是第二谐波
  • k = N / 2 k=N/2 k=N/2时,对应奈奎斯特频率(即采样定理)

此时我们得到了不同的 ω 0 , ω 1 , ω 2 , . . . , ω N − 1 \omega_0,\omega_1,\omega_2,...,\omega_N-1 ω0,ω1,ω2,...,ωN1,从这里也能看出,对于离散傅里叶级数,频域也是离散的。

e j ( − 2 π k n N ) e^{j(\frac{-2\pi kn}{N})} ej(N2πkn)的释义

其实在音频进阶学习九——离散时间傅里叶变换DTFT文章中已经解释过了,这里再简单解释一遍:

对于欧拉公式将极坐标表示为复指数形式:
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)
它表示的是随着 n n n的增长,以频率 ω \omega ω在一个单位圆上以顺时针方式进行周期震荡,可以根据之前文章中的图片进行理解。

∑ n = 0 N − 1 e j ( − 2 π k n N ) x ~ [ n ] \sum_{n=0}^{N-1}e^{j(\frac{-2\pi kn}{N})}\tilde{x}[n] n=0N1ej(N2πkn)x~[n]的释义

而对于序列与复指数相乘,我们可以看作是序列 x ~ [ n ] \tilde{x}[n] x~[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
ω 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。

也就是说对于 e j ( − 2 π k n N ) × x ~ [ n ] e^{j(\frac{-2\pi kn}{N})} \times \tilde{x}[n] ej(N2πkn)×x~[n],如果 x ~ [ n ] \tilde{x}[n] x~[n]中间不包含特定的 − 2 π k n N \frac{-2\pi kn}{N} N2πkn(当 N , k N,k N,k确定时)的频率,那么对于 ∑ n = 0 N − 1 e j ( − 2 π k n N ) x ~ [ n ] \sum_{n=0}^{N-1}e^{j(\frac{-2\pi kn}{N})}\tilde{x}[n] n=0N1ej(N2πkn)x~[n],求和为零。

2)左边解释

与DTFT相同,对于 X ~ [ k ] \tilde{X}[k] X~[k]同样包含了幅度与相位,这里也简单回顾一下之前的文章。

实部与虚部

我们知道对于欧拉公式:
e j θ = cos ⁡ ( θ ) + j sin ⁡ ( θ ) e^{j\theta}=\cos(\theta)+j\sin(\theta) ejθ=cos(θ)+jsin(θ)
它的实部表示了相位(两波之间的时间或空间偏移),虚部表示了幅度,对于DFS中:
X ~ [ k ] = ∑ n = 0 N − 1 e j ( − 2 π k n N ) x ~ [ n ] X ~ [ k ] = ∑ n = 0 N − 1 x ~ [ n ] cos ⁡ ( 2 π N k ) ⏟ R e ( X ~ [ k ] ) − ∑ n = 0 N − 1 j x ~ [ n ] sin ⁡ ( 2 π N k ) ⏟ I e ( X ~ [ k ] ) \tilde{X}[k]=\sum_{n=0}^{N-1}e^{j(\frac{-2\pi kn}{N})}\tilde{x}[n]\\ \tilde{X}[k]=\underbrace{\sum_{n=0}^{N-1}\tilde{x}[n]\cos(\frac{2\pi}{N}k)}_{Re(\tilde{X}[k])} - \underbrace{\sum_{n=0}^{N-1}j\tilde{x}[n]\sin(\frac{2\pi}{N}k)}_{Ie(\tilde{X}[k])} X~[k]=n=0N1ej(N2πkn)x~[n]X~[k]=Re(X~[k]) n=0N1x~[n]cos(N2πk)Ie(X~[k]) n=0N1jx~[n]sin(N2πk)

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

二、IDFS推导

离散傅里叶级数的逆公式(Inverse Discrete Fourier Series, IDFS)是将频域信息转换回时间域信号的过程。其推导过程是基于傅里叶变换的性质。其验证如下:

  • DFS
    X ~ [ k ] = ∑ m = 0 N − 1 e j ( − 2 π k n N ) x ~ [ m ] \tilde{X}[k]=\sum_{m=0}^{N-1}e^{j(\frac{-2\pi kn}{N})}\tilde{x}[m] X~[k]=m=0N1ej(N2πkn)x~[m]
  • IDFS
    x ~ [ n ] = 1 N ∑ k = 0 N − 1 e j ( 2 π k n N ) X ~ [ k ] \tilde{x}[n]=\frac{1}{N}\sum_{k=0}^{N-1}e^{j(\frac{2\pi kn}{N})}\tilde{X}[k] x~[n]=N1k=0N1ej(N2πkn)X~[k]
  • 将DFS代入IDFS
    x ~ [ n ] = 1 N ∑ k = 0 N − 1 ( ∑ m = 0 N − 1 e j ( − 2 π k n N ) x ~ [ m ] ) e j ( 2 π k n N ) \tilde{x}[n] =\frac{1}{N}\sum_{k=0}^{N-1}\Big(\sum_{m=0}^{N-1}e^{j(\frac{-2\pi kn}{N})}\tilde{x}[m]\Big)e^{j(\frac{2\pi kn}{N})} x~[n]=N1k=0N1(m=0N1ej(N2πkn)x~[m])ej(N2πkn)
  • 根据交换求和
    x ~ [ n ] = 1 N ∑ m = 0 N − 1 x ~ [ m ] ∑ k = 0 N − 1 e j 2 π k N ( n − m ) \tilde{x}[n] =\frac{1}{N}\sum_{m=0}^{N-1}\tilde{x}[m]\sum_{k=0}^{N-1}e^{j\frac{2\pi k}{N}(n-m)} x~[n]=N1m=0N1x~[m]k=0N1ejN2πk(nm)
  • 内层求和
    ∑ k = 0 N − 1 e j 2 π k N ( n − m ) = { N , n = m 0 , n ≠ m \sum_{k=0}^{N-1}e^{j\frac{2\pi k}{N}(n-m)}=\begin{cases} N, \quad n=m\\ 0,\quad n\neq m\end{cases} k=0N1ejN2πk(nm)={N,n=m0,n=m
  • 将内层求和替换进入
    x ~ [ n ] = 1 N ∑ m = 0 N − 1 x ~ [ m ] × N × δ n , m \tilde{x}[n]=\frac{1}{N}\sum_{m=0}^{N-1}\tilde{x}[m]\times N \times \delta_{n,m} x~[n]=N1m=0N1x~[m]×N×δn,m
  • 简化
    x ~ [ n ] = ∑ m = 0 N − 1 x ~ [ m ] δ ( n − m ) \tilde{x}[n]=\sum_{m=0}^{N-1}\tilde{x}[m]\delta(n-m) x~[n]=m=0N1x~[m]δ(nm)

于是我们有一次得到了冲激分解公式,使用单位冲激序列表示的加权和。

三、DFS的性质

由于DFS和DTFT的相似性,在上一篇文章中音频进阶学习十——DTFT的条件、性质与举例,已经对于各种性质做了详细介绍,并且其推导公式很简单(如果感兴趣推导过程,可以看看北京航空航天大学王俊老师的课程),这里只做简单介绍。

1. 周期性性质

  • 离散傅里叶级数的信号 x [ n ] x[n] x[n] 是周期性的,周期为 N N N
  • 其频域表示 X [ k ] X[k] X[k] 也是周期性的,周期为 N N N,即:
    X ~ [ k ] = X ~ [ k + N ] \tilde X[k]=\tilde X[k+N] X~[k]=X~[k+N]

2.线性性质

离散傅里叶级数具有线性性质,即如果信号 x 1 [ n ] x_1[n] x1[n] x 2 [ n ] x_2[n] x2[n] 的傅里叶系数分别是 X 1 [ k ] X_1[k] X1[k] X 2 [ k ] X_2[k] X2[k],那么任意常数倍的线性组合也满足傅里叶级数的线性性:
x ~ [ n ] = a x ~ 1 [ n ] + b x ~ 2 [ n ] ⟷ D F S X ~ [ k ] = a X ~ 1 [ k ] + b X ~ 2 [ k ] \tilde x[n]=a\tilde x_1[n]+b\tilde x_2[n]\stackrel{DFS}{\longleftrightarrow}\tilde X[k]=a\tilde X_1[k]+b\tilde X_2[k] x~[n]=ax~1[n]+bx~2[n]DFSX~[k]=aX~1[k]+bX~2[k]
在这里插入图片描述

3.时域移位

幅度频不变,相位成线性变化
x ~ [ n − n d ] ⟷ D F S X ~ [ k ] e − j 2 π k N n d \tilde x[n-n_d]\stackrel{DFS}{\longleftrightarrow}\tilde X[k]e^{-j\frac{2\pi k}{N}n_d} x~[nnd]DFSX~[k]ejN2πknd
在这里插入图片描述

4.频域移位

频域的移位相当于时域乘上一个复指数序列
x ~ [ n ] e − j 2 π k N l ⟷ D F S X ~ [ k − l ] \tilde x[n]e^{-j\frac{2\pi k}{N}l}\stackrel{DFS}{\longleftrightarrow}\tilde X[k-l] x~[n]ejN2πklDFSX~[kl]
在这里插入图片描述

5.时间翻转

时域翻转,频域也会相应翻转,即幅度和相位也会翻转
x ~ [ − n ] ⟷ D F S X ~ [ − k ] \tilde x[-n]\stackrel{DFS}{\longleftrightarrow}\tilde X[-k] x~[n]DFSX~[k]
在这里插入图片描述

6.时域卷积

时域卷积等于频域相乘,即 ∗ * 代表卷积运算
x ~ [ n ] ∗ h ~ [ n ] ⟷ D F S X ~ [ k ] × H ~ [ k ] \tilde x[n] *\tilde h[n]\stackrel{DFS}{\longleftrightarrow}\tilde X[k]\times \tilde H[k] x~[n]h~[n]DFSX~[k]×H~[k]
在这里插入图片描述

7.频域卷积

频域卷积等于时域相乘,即 ∗ * 代表卷积运算
x ~ [ n ] × w ~ [ n ] ⟷ D F S 1 N ∑ l = 0 N − 1 X ~ [ l ] ∗ W ~ [ k − l ] \tilde x[n] \times \tilde w[n]\stackrel{DFS}{\longleftrightarrow} \frac{1}{N}\sum_{l=0}^{N-1}\tilde X[l]*\tilde W[k-l] x~[n]×w~[n]DFSN1l=0N1X~[l]W~[kl]
在这里插入图片描述


总结

本篇文章中对于DFS的公式做了详细的介绍,相信对于DFS和IDFS公式的推导和使用有了一定的理解。同时本篇文章也将DFS的性质做了介绍。

DFS和DTFT有着一定的联系和区:对于DFS,它主要用于表示周期性离散时间信号,在频域上是离散的且为周期的,而对于DTFT,它表示非周期性离散时间信号的频谱,在频域上是连续的。也就是说DFS可以看作为 DTFT 在一个周期内的采样。

反正收藏也不会看,请帮忙点个赞吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/894942.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++ Primer 成员访问运算符

欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…

基础入门-算法解密散列对称非对称字典碰撞前后端逆向MD5AESDESRSA

知识点: 0、算法类型-单向散列&对称性&非对称性 1、算法识别加解密-MD5&AES&DES&RSA 2、解密条件寻找-逻辑特征&源码中&JS分析 应用场景: 1、发送数据的时候自动将数据加密发送(只需加密即可) 安全…

Qt修仙之路2-1 炼丹初成

widget.cpp #include "widget.h" #include<QDebug> //实现槽函数 void Widget::login1() {QString userusername_input->text();QString passpassword_input->text();//如果不勾选无法登入if(!check->isChecked()){qDebug()<<"xxx"&…

【R语言】环境空间

一、环境空间的特点 环境空间是一种特殊类型的变量&#xff0c;它可以像其它变量一样被分配和操作&#xff0c;还可以以参数的形式传递给函数。 R语言中环境空间具有如下3个特点&#xff1a; 1、对象名称唯一性 此特点指的是在不同的环境空间中可以有同名的变量出现&#x…

【redis】缓存设计规范

本文是 Redis 键值设计的 14 个核心规范与最佳实践&#xff0c;按重要程度分层说明&#xff1a; 一、通用数据类型选择 这里我们先给出常规的选择路径图。 以下是对每个步骤的分析&#xff1a; 是否需要排序&#xff1f;&#xff1a; zset&#xff08;有序集合&#xff09;用…

LabVIEW2025中文版软件安装包、工具包、安装教程下载

下载链接&#xff1a;LabVIEW及工具包大全-三易电子工作室http://blog.eeecontrol.com/labview6666 《LabVIEW2025安装图文教程》 1、解压后&#xff0c;双击install.exe安装 2、选中“我接受上述2条许可协议”&#xff0c;点击下一步 3、点击下一步&#xff0c;安装NI Packa…

BUU17 [RoarCTF 2019]Easy Calc1

自用 源代码 $(#calc).submit(function(){$.ajax({url:"calc.php?num"encodeURIComponent($("#content").val()),type:GET,success:function(data){$("#result").html(<div class"alert alert-success"><strong>答案:&l…

Java并发编程笔记

Java并发基础知识补全 启动 启动线程的方式只有&#xff1a; 1、X extends Thread;&#xff0c;然后X.start 2、X implements Runnable&#xff1b;然后交给Thread运行 线程的状态 Java中线程的状态分为6种&#xff1a; 1. 初始(NEW)&#xff1a;新创建了一个线程对象&…

使用多模态大语言模型进行深度学习的图像、文本和语音数据增强

在过去的五年里&#xff0c;研究方向已从传统的机器学习&#xff08;ML&#xff09;和深度学习&#xff08;DL&#xff09;方法转向利用大语言模型&#xff08;LLMs&#xff09;&#xff0c;包括多模态方法&#xff0c;用于数据增强&#xff0c;以提高泛化能力&#xff0c;并在…

Windows Docker笔记-Docker拉取镜像

通过在前面的章节《安装docker》中&#xff0c;了解并安装成功了Docker&#xff0c;本章讲述如何使用Docker拉取镜像。 使用Docker&#xff0c;主要是想要创建并运行Docker容器&#xff0c;而容器又要根据Docker镜像来创建&#xff0c;那么首当其冲&#xff0c;必须要先有一个…

Office/WPS接入DS等多个AI工具,开启办公新模式!

在现代职场中&#xff0c;Office办公套件已成为工作和学习的必备工具&#xff0c;其功能强大但复杂&#xff0c;熟练掌握需要系统的学习。为了简化操作&#xff0c;使每个人都能轻松使用各种功能&#xff0c;市场上涌现出各类办公插件。这些插件不仅提升了用户体验&#xff0c;…

FPGA的IP核接口引脚含义-快解

疑问 手册繁琐&#xff0c;怎样快速了解IP核各输入输出接口引脚的含义。 答疑 不慌不慌&#xff0c;手册确实比较详细但繁琐&#xff0c;如何快速知晓该部分信息&#xff0c;涛tao道长给你们说&#xff0c;简单得很&#xff0c;一般新入门的道友有所不知&#xff0c;往往后面…

告别手动操作!用Ansible user模块高效管理 Linux账户

在企业运维环境中&#xff0c;服务器的用户管理是一项基础但非常重要的任务。比如&#xff0c;当有新员工加入时&#xff0c;我们需要在多台服务器上为他们创建账户并分配合适的权限。而当员工离职或岗位发生变化时&#xff0c;我们也需要迅速禁用或删除他们的账户&#xff0c;…

ADC模数转换器概念函数及应用

ADC模数转换器概念函数及应用 文章目录 ADC模数转换器概念函数及应用1.ADC简介2.逐次逼近型ADC2.1逐次逼近型ADC2.2stm32逐次逼近型2.3ADC基本结构2.4十六个通道 3.规则组的4种转换模式3.1单次转换&#xff0c;非扫描模式3.2连续转换&#xff0c;非扫描模式3.3单次转换&#xf…

DeepSeek在FPGA/IC开发中的创新应用与未来潜力

随着人工智能技术的飞速发展&#xff0c;以DeepSeek为代表的大语言模型&#xff08;LLM&#xff09;正在逐步渗透到传统硬件开发领域。在FPGA&#xff08;现场可编程门阵列&#xff09;和IC&#xff08;集成电路&#xff09;开发这一技术密集型行业中&#xff0c;DeepSeek凭借其…

【Elasticsearch】nested聚合

在 Elasticsearch 中&#xff0c;嵌套聚合&#xff08;nestedaggregation&#xff09;的语法形式用于对嵌套字段&#xff08;nestedfields&#xff09;进行聚合操作。嵌套字段是 Elasticsearch 中的一种特殊字段类型&#xff0c;用于存储数组中的对象&#xff0c;这些对象需要独…

【Uniapp-Vue3】创建DB schema数据表结构

右键uniCloud文件下的database文件&#xff0c;点击“新建DB schema”&#xff0c;选择模板&#xff0c;修改文件名&#xff0c;点击“创建” 创建完成后会出现对应的文件&#xff0c;进入该文件进行配置 对文件中的必填选项&#xff0c;用户权限&#xff0c;字段进行配置 其…

BFS算法篇——广度优先搜索,探索未知的旅程(上)

文章目录 前言一、BFS的思路二、BFS的C语言实现1. 图的表示2. BFS的实现 三、代码解析四、输出结果五、总结 前言 广度优先搜索&#xff08;BFS&#xff09;是一种广泛应用于图论中的算法&#xff0c;常用于寻找最短路径、图的遍历等问题。与深度优先搜索&#xff08;DFS&…

蓝耘智算平台使用DeepSeek教程

目录 一.平台架构与技术特点 二、DeepSeek R1模型介绍与优势 DeepSeek R1 模型简介 DeepSeek R1 模型优势 三.蓝耘智算平台使用DeepSeek教程 展望未来 耘元生代智算云是蓝耘科技推出的一款智算云平台有着以下特点&#xff1a; 一.平台架构与技术特点 基于 Kubernetes 原…

1Panel应用推荐:WordPress开源博客软件和内容管理系统

1Panel&#xff08;github.com/1Panel-dev/1Panel&#xff09;是一款现代化、开源的Linux服务器运维管理面板&#xff0c;它致力于通过开源的方式&#xff0c;帮助用户简化建站与运维管理流程。为了方便广大用户快捷安装部署相关软件应用&#xff0c;1Panel特别开通应用商店&am…