diff --git a/source/_posts/2023-04-18-josh-oap-part-1-1.md b/source/_posts/2023-04-18-josh-oap-part-1-1.md index 16e8db7..208ea62 100644 --- a/source/_posts/2023-04-18-josh-oap-part-1-1.md +++ b/source/_posts/2023-04-18-josh-oap-part-1-1.md @@ -21,13 +21,13 @@ tags: - 波束方向图 --- -  假设在空时场的某个区域内有一个或多个信号,同时在某些区域内存在噪声和/或干扰。在一些阵列信号处理的应用场景中,这些区域是部分重叠的。阵列可以利用信号的空域特征,对空时场域(space-time field)内的信号进行滤波。这种滤波可以用一种与角度或波数的相关性(in terms of a dependence upon angle or wavenumber)进行描述。在频域看,这种滤波是通过使用复增益对阵列输出进行加权,根据信号的空域相关性对信号进行增强或抑制来实现的。通常我们对空时场进行空域滤波的目的是:使得从一个(或一组)特定角度到来的信号通过有效的组合得到增强,抑制从其他角度到来的噪声或干扰。 +  假设在空时场(space-time field)的某个区域内有一个或多个信号,同时在某些区域内存在噪声和/或干扰。在一些阵列信号处理的应用场景中,这些区域是部分重叠的。阵列可以利用信号的空域特征,对空时场域内的信号进行滤波。这种滤波可以用一种与角度或波数的相关性(in terms of a dependence upon angle or wavenumber)进行描述。从频域看,这种滤波是通过使用复增益对阵列输出进行加权,根据信号的空域相关性对信号进行增强或抑制来实现的。通常我们对空时场进行空域滤波的目的是:使得从一个(或一组)特定角度到来的信号通过有效的组合得到增强,抑制从其他角度到来的噪声或干扰。 ![图 1-1-1 球坐标系](https://josh-blog-1257563604.cos.ap-beijing.myqcloud.com/img/2023-04-18-josh-oap-part-1-1/2023-04-18-josh-oap-part-1-1-010-SphericalCoordinareSystem.png!sign){width=600px} -  首先需要明确采用的坐标系,如[图 1-1-1](#fig.1-1-1) 所示,直角坐标系和球坐标系的关系也在其中标明: +  在分析之前首先需要明确采用的坐标系,如[图 1-1-1](#fig.1-1-1) 所示,直角坐标系和球坐标系的关系也在其中标明: $$\begin{equation} \begin{aligned} @@ -52,12 +52,17 @@ $$\begin{equation} \right] \end{equation}$$ +{% note warning %} + +请注意,这里并没有指定阵列的几何排布,因此下面的分析是适用于所有阵列的。 + +{% endnote %} + ![图 1-1-2 $N$ 阵元阵列](https://josh-blog-1257563604.cos.ap-beijing.myqcloud.com/img/2023-04-18-josh-oap-part-1-1/2023-04-18-josh-oap-part-1-1-020-NElementArray.png!sign){width=600px} -  对每个阵元的输出用一个线性时不变滤波器进行处理,该滤波器的冲激响应为 $h_n(\tau)$ -并对所有输出求和,得到阵列的输出 $y(t)$,如[图 1-1-3](#fig.1-1-3) 所示。假设观察间隔足够长(可以考虑为无限长),则输出 $y(t)$ 可以写成一个卷积积分的形式: +  对每个阵元的输出用一个线性时不变滤波器进行处理,该滤波器的冲激响应为 $h_n(\tau)$,并对所有输出求和,得到阵列的输出 $y(t)$,如[图 1-1-3](#fig.1-1-3) 所示。假设观察间隔足够长(可以考虑为无限长),则输出 $y(t)$ 可以写成卷积积分的形式: $$\begin{equation} y(t) = \sum_{n=0}^{N-1} \int_{-\infty}^{\infty} h_n (t-\tau)f_n\left(\tau,\vec{p}_n\right) \mathrm{d} \tau @@ -67,7 +72,7 @@ y(t) = \sum_{n=0}^{N-1} \int_{-\infty}^{\infty} h_n (t-\tau)f_n\left(\tau,\vec{p ![图 1-1-3 线性处理阵列](https://josh-blog-1257563604.cos.ap-beijing.myqcloud.com/img/2023-04-18-josh-oap-part-1-1/2023-04-18-josh-oap-part-1-1-030-ArrayWithLinearProcessing.png!sign){width=600px} -这个结果可以用矢量符号表示为(即将标量结果向矢量模型的进行直接扩展,a straightforward extension of scalar results to the vector model) +这个结果可以用矢量符号表示为(即将标量结果向矢量模型进行直接扩展,a straightforward extension of scalar results to the vector model) $$\begin{equation} \label{VectorFormOfLinearArrayOutputInTimeDomain} y(t) = \int_{-\infty}^{\infty} \vec{h}^\mathrm{T} (t-\tau) \vec{f}\left(\tau,\vec{p}\right) \mathrm{d} \tau @@ -85,7 +90,7 @@ $$\begin{equation} \label{ImpulseResponse} \right] \end{equation}$$ -也可以把式式$\eqref{VectorFormOfLinearArrayOutputInTimeDomain}$ 在变换域表示为 +也可以把式 $\eqref{VectorFormOfLinearArrayOutputInTimeDomain}$ 在变换域表示为 $$\begin{equation} \begin{aligned} @@ -104,9 +109,9 @@ $$\begin{equation} \label{SampleVectorInFreqDomain} \vec{F} \left(\omega,\vec{p}\right) = \int_{-\infty}^{\infty} \vec{f}\left(\tau,\vec{p}\right) e^{-j\omega t} \mathrm{d} t \end{equation}$$ -在大多数情况下,去掉式$\eqref{SampleVectorInFreqDomain}$ 中左边的 $\vec{p}$, 直接使用 $\vec{F}(\omega)$ 。 +在大多数情况下,可以去掉式 $\eqref{SampleVectorInFreqDomain}$ 中左边的 $\vec{p}$,直接使用 $\vec{F}(\omega)$ 。 -  下面考虑如[图 1-1-4](#fig.1-1-4) 所示的简单的波束形成操作。外部信号输入为传播方向为 $\vec{a}$, 时域频率(弧度)为 $\omega$ 的平面波,则在时域上每个阵元的输入信号可以用两种等效的方式进行表示。 +  下面考虑如[图 1-1-4](#fig.1-1-4) 所示的简单的波束形成操作。外部信号输入为传播方向为 $\vec{a}$,时域频率(弧度)为 $\omega$ 的平面波,则在时域上每个阵元的输入信号可以用两种等效的方式进行表示。 @@ -125,7 +130,7 @@ $$\begin{equation} \label{DelayedSignal} \right] \end{equation}$$ -其中 +其中时延可表示为(距离除以速度得到时间) $$\begin{equation} \label{ExpressionOfDelayByDirection} \tau_n = \frac{\vec{a}^\mathrm{T}\vec{p}_n}{c} @@ -147,7 +152,7 @@ $$\begin{equation} \label{RelativeDelay} \tau_n = -\frac{1}{c}\left(\sin\theta\cos\varphi \cot p_{x_n} + \sin\theta\sin\varphi \cdot p_{y_n} + \cos\theta \cdot p_{z_n} \right) \end{equation}$$ -如果定义对于每个轴的方向余弦为 +如果定义对于每个轴的方向余弦(direction cosine)为 $$\begin{align} u_x &= \sin\theta\cos\varphi \\ @@ -161,13 +166,13 @@ $$\begin{equation} \vec{u} = -\vec{a} \end{equation}$$ -则式$\eqref{RelativeDelay}$ 可以写成 +则式 $\eqref{RelativeDelay}$ 可以写成 -$$\begin{equation} +$$\begin{equation} \label{RelativeDelayWithDirectionCosine} \tau_n = -\frac{1}{c}\left(u_x p_{x_n} + u_y p_{y_n} + u_z p_{z_n} \right) = -\frac{\vec{u}^\mathrm{T}\vec{p}_n}{c} \end{equation}$$ -根据式$\eqref{DelayedSignal}$, $\vec{F}(\omega)$ 的第 $n$ 个分量为(利用 Fourier 变换的时移性质) +根据式 $\eqref{DelayedSignal}$,$\vec{F}(\omega)$ 的第 $n$ 个分量为(利用 Fourier 变换的时移性质) $$\begin{equation} F_n(\omega) = \int_{-\infty}^{\infty} e^{j \omega t} f(t - \tau_n) \mathrm{d} t = e^{j \omega \tau_n} F (\omega) @@ -204,7 +209,7 @@ $$\begin{equation} \label{WaveEquation} \left| \vec{k} \right| = \frac{\omega}{c} = \frac{2\pi}{\lambda} \end{equation}$$ -所以,仅 $\vec{k}$ 的方向是变化的。比较式$\eqref{ExpressionOfDelayByDirection}$ 和式$\eqref{DefinitionOfWavenumber}$,可以看到 +所以,仅 $\vec{k}$ 的方向是变化的。比较式 $\eqref{ExpressionOfDelayByDirection}$ 和式 $\eqref{DefinitionOfWavenumber}$,可以看到 $$\begin{equation} \omega \tau_n = \vec{k}^\mathrm{T}\vec{p}_n @@ -229,8 +234,7 @@ $$\begin{equation} 矢量 $\vec{v}_{\vec{k}}\left(\vec{k}\right)$ 包含了阵列的所有空间特征,称为**{% label primary @阵列流形矢量(array manifold vector) %}**。在我们的讨论中,阵列流形矢量具有非常核心的作用。下标 $\vec{k}$ 表示参数属于 $\vec{k}$ 空间。这个下标的作用是把它和以后将在阵列流形矢量中使用的其他变量相区分。 -  在这种情况下,把每个阵元的输入信号平移,使之在时间上对齐,然后把它们相加。这 -个操作过程如[图 1-1-5](#fig.1-1-5) 所示,其中包含了归一化因子 $1/N$, 使得输出为 $f(t)$。在这里, +  在这种情况下,把每个阵元的输入信号平移,使之在时间上对齐,然后把它们相加。这个操作过程如[图 1-1-5](#fig.1-1-5) 所示,其中包含了归一化因子 $1/N$,使得输出为 $f(t)$。在这里, $$\begin{equation} \label{DelayAndSumBeamformer} h_n(\tau) = \frac{1}{N} \delta(\tau + \tau_n) @@ -248,20 +252,20 @@ $$\begin{equation}   这个处理器称为**{% label primary @延时求和波束形成器(delay-and-sum beamformer) %}**或**{% label primary @常规波束形成器(conventional beamformer) %}**。在实际中会在每个通道中加上一个共同的延时,使得[图 1-1-5](#fig.1-1-5) 中的操作是物理可实现的。 -  此外,还可以把式$\eqref{DelayAndSumBeamformer}$ 在频域内写成简洁的矩阵形式。如果 $\vec{k}_\mathrm{s}$ 是我们所感兴趣的平面波信号的波数,则 +  此外,还可以把式 $\eqref{DelayAndSumBeamformer}$ 在频域内写成简洁的矩阵形式。如果 $\vec{k}_\mathrm{s}$ 是我们所感兴趣的平面波信号的波数,则 $$\begin{equation} \vec{H}^\mathrm{T} (\omega) = \frac{1}{N} \vec{v}_{\vec{k}}^\mathrm{H} \left( \vec{k}_\mathrm{s} \right) \end{equation}$$ -其中 $\vec{v}_{\vec{k}}\left(\vec{k}\right)$ 在式$\eqref{DefinitionOfArrayManifoldVector}$ 中定义。 +其中 $\vec{v}_{\vec{k}}\left(\vec{k}\right)$ 在式 $\eqref{DefinitionOfArrayManifoldVector}$ 中定义。   现在回到一般的问题,我们想要确定阵列对一个输入场 $\vec{f}(t, \vec{p})$ 的响应,这可以通过之前给出的卷积求和操作来实现,但更有用的方法是首先确定阵列对单位平面波(unit plane wave)的响应,响应为单位平面波时域(弧度)频率 $\omega$ 和波数 $\vec{k}$ 的函数。(利用叠加的复指数基函数对一个线性时不变系统进行分析的系统理论方法可以扩展到空时信号的情况。) 这里的基函数形式为 $$\begin{equation} - f_n \left( t, \vec{p}_n \right) = \exp \left[ j \left( \omega t - \vec{k}^\mathrm{T} \vec{p}_n\right) \right], \, n = 0, 1, \cdots, N-1 + f_n\left( t, \vec{p}_n \right) = \exp \left[ j \left( \omega t - \vec{k}^\mathrm{T} \vec{p}_n\right) \right], \, n = 0, 1, \cdots, N-1 \end{equation}$$ 或 @@ -270,45 +274,45 @@ $$\begin{equation} \vec{f} \left( t, \vec{p} \right) = e^{j\omega t} \vec{v}_{\vec{k}}\left(\vec{k}\right) \end{equation}$$ -其中 $\vec{v}_{\vec{k}}\left(\vec{k}\right)$ 在式$\eqref{DefinitionOfArrayManifoldVector}$ 中定义。 +其中 $\vec{v}_{\vec{k}}\left(\vec{k}\right)$ 在式 $\eqref{DefinitionOfArrayManifoldVector}$ 中定义。 -  $\eqref{VectorFormOfLinearArrayOutputInTimeDomain}$ 中的阵列处理器对于一个平面波的响应为 +  式 $\eqref{VectorFormOfLinearArrayOutputInTimeDomain}$ 中的阵列处理器对于一个平面波的响应为 $$\begin{equation} \label{ArrayResponseToUnitPlaneWaveInTimeDomain} y \left( t, \vec{k} \right) = \vec{H}^\mathrm{T} (\omega) \vec{v}_{\vec{k}}\left(\vec{k}\right) e^{j\omega t} \end{equation}$$ -其中 $\vec{H}^\mathrm{T} (\omega)$ 是式$\eqref{ImpulseResponse}$ 中 $\vec{h}(\tau)$ 的傅里叶变换。 +其中 $\vec{H} (\omega)$ 是式 $\eqref{ImpulseResponse}$ 中 $\vec{h}(\tau)$ 的傅里叶变换。 -  这里用了符号 $y \left( t, \vec{k} \right)$, 以强调输出和输入波数 $\vec{k}$ 的关系。时域上的相关性体现在输出是一个复指数,和输入平面波具有相同的频率。在频域内,$\eqref{ArrayResponseToUnitPlaneWaveInTimeDomain}$ 可以写成下面的形式: +  这里用了符号 $y \left( t, \vec{k} \right)$,以强调输出和输入波数 $\vec{k}$ 的关系。时域上的相关性体现在输出是一个复指数,和输入平面波具有相同的频率。在频域内,$\eqref{ArrayResponseToUnitPlaneWaveInTimeDomain}$ 可以写成下面的形式: $$\begin{equation} \label{ArrayResponseToUnitPlaneWaveInFreqDomain} Y \left( \omega, \vec{k} \right) = \vec{H}^\mathrm{T} (\omega) \vec{v}_{\vec{k}}\left(\vec{k}\right) \end{equation}$$ -  注意,$\omega$ 是对应输入频率的单一频率。阵列的空时处理完全可以由式$\eqref{ArrayResponseToUnitPlaneWaveInFreqDomain}$ 的右端描述。把这一项定义为 +  注意,$\omega$ 是对应输入频率的单一频率。阵列的空时处理完全可以由式 $\eqref{ArrayResponseToUnitPlaneWaveInFreqDomain}$ 的右端描述。把这一项定义为 $$\begin{equation} \label{FrequencyWavenumberResponse} \boxed{\vec{\varUpsilon} \left( \omega, \vec{k} \right) \triangleq \vec{H}^\mathrm{T} (\omega) \vec{v}_{\vec{k}}\left(\vec{k}\right)} \end{equation}$$ -称之为阵列的**{% label primary @频率-波数响应函数(frequency-wavenumber response function) %}**。它描述了一个阵列对于波数为 $\vec{k}$、时域频率为 $\omega$ 的输入平面波的复增益,具有与线性、时不变系统的传递函数相同的解释(这里我们用了 $\vec{\varUpsilon} \left( \omega, \vec{k} \right)$, 是因为 $Y \left( \omega, \vec{k} \right)$ 在后面将要用于描述对任意输入的输出)。 $\vec{\varUpsilon} \left( \omega, \vec{k} \right)$ 是定义在整个 $\vec{k}$ 空间上的。$\eqref{FrequencyWavenumberResponse}$ 中的第二项 $\vec{v}_{\vec{k}}\left(\vec{k}\right)$ 是在式$\eqref{DefinitionOfArrayManifoldVector}$ 中定义的阵列流形矢量。 +称之为阵列的**{% label primary @频率-波数响应函数(frequency-wavenumber response function) %}**。它描述了一个阵列对于波数为 $\vec{k}$、时域频率为 $\omega$ 的输入平面波的复增益,具有与线性、时不变系统的传递函数相同的解释(这里我们用了 $\vec{\varUpsilon} \left( \omega, \vec{k} \right)$, 是因为 $Y \left( \omega, \vec{k} \right)$ 在后面将要用于描述对任意输入的输出)。 $\vec{\varUpsilon} \left( \omega, \vec{k} \right)$ 是定义在整个 $\vec{k}$ 空间上的。$\eqref{FrequencyWavenumberResponse}$ 中的第二项 $\vec{v}_{\vec{k}}\left(\vec{k}\right)$ 是在式 $\eqref{DefinitionOfArrayManifoldVector}$ 中定义的阵列流形矢量。   频率-波数响应函数描述了阵列对任意一个平面波的响应。在大多数的实际物理应用中,时域频率 $\omega$ 和空域波数 $\vec{k}$ 通过平面波传播的波动方程形成了耦合关系。有时这是一个非常简单的关系,例如当一个平而波在均匀(且无限)的空间中传播时。在其他的情况下,可能是非常复杂的耦合关系,例如在水下声学和地震学中的分层介质模型中的情况。 -  一个阵列的**{% label primary @*波束方向图(beam pattern) %}**定义的背景是平面波在局部均匀的介质中传播,约束的波动方程见式$\eqref{WaveEquation}$。如式$\eqref{WaveEquation}$ 所示,这约束了波数 $\vec{k}$ 的幅度。波束方向图是用入射方向表示的频率-波数响应函数,或者可以写成 +  一个阵列的**{% label primary @波束方向图(beam pattern) %}**定义的背景是平面波在局部均匀的介质中传播,约束的波动方程见式 $\eqref{WaveEquation}$。如式 $\eqref{WaveEquation}$ 所示,这约束了波数 $\vec{k}$ 的幅度。波束方向图是用入射方向表示的频率-波数响应函数,或者可以写成 $$\begin{equation} B(\omega:\theta,\varphi) = \left. \vec{\varUpsilon} \left( \omega, \vec{k} \right) \right|_{\vec{k}=\frac{2\pi}{\lambda}\vec{a}(\theta,\varphi)} \end{equation}$$ -其中 $\vec{a}(\theta,\varphi)$ 是一个单位矢量,在球坐标系中对应的角度为 $\theta$ 和 $\varphi$。可以看到,波束方向图是频率-波数响应在一个半径为 $2\pi /\lambda$ 的球上的值。 +其中 $\vec{a}(\theta,\varphi)$ 是一个单位矢量,在球坐标系中对应的角度为 $\theta$ 和 $\varphi$。可以看到,**波束方向图是频率-波数响应在一个半径为 $2\pi /\lambda$ 的球上的值**。 -阵列的波束方向图是确定阵列性能的关键要素。后续将会研究均匀加权线阵(uniformly weighted linear array)的波束方向图。 +  阵列的波束方向图是确定阵列性能的关键要素。后续将会研究均匀加权线阵(uniformly weighted linear array)的波束方向图。 -在这里中,我们强调 $f\left( t,\vec{p}_n \right)$ 是带通信号的情况,即 +  在这里中,我们强调 $f\left( t,\vec{p}_n \right)$ 是带通信号的情况,即 -$$\begin{equation} +$$\begin{equation} \label{BandpassConstraint} f\left( t,\vec{p}_n \right) = \sqrt{2} \Re\left\{ \tilde{f} \left( t,\vec{p}_n \right) e^{j \omega_c t}\right\}, \, n = 0, \cdots, N-1 \end{equation}$$ @@ -321,7 +325,93 @@ $$\begin{equation} 其中 $$\begin{equation} - \omega_L \triangleq = \omega - \omega_c + \omega_L \triangleq \omega - \omega_c \end{equation}$$ 且 $\pi B_s$ 是一个常数,确定了复包络的最大带宽。 + +  对于式 $\eqref{DelayedSignal}$ 中的平面波,式 $\eqref{BandpassConstraint}$ 成为 + +$$\begin{equation} \label{BandpassConstraintApproximation} + f\left( t,\vec{p}_n \right) = \sqrt{2} \Re\left\{ \tilde{f} \left( t - \tau_n \right) e^{j \omega_c \left( t - \tau_n \right)}\right\}, \, n = 0, \cdots, N-1 +\end{equation}$$ + +其中,$\tau_n$ 由式 $\eqref{RelativeDelayWithDirectionCosine}$ 给出。 + +  现在考虑信号跨越阵列传播的时间(the travel time across the array)。定义 $\Delta T_{nm} \left( \vec{u} \right)$ 为一个方向余弦为 $\vec{u}$ 的平面波在第 $n$ 个阵元和第 $m$ 个阵元之间的传播时间。则, + +$$\begin{equation} + \Delta T_{\max} \triangleq \max_{n,m=0,\cdots,N-1;\vec{u}} \{\Delta T_{nm} \left( \vec{u} \right)\} +\end{equation}$$ + +是阵列的任意两个阵元之间的最大传播时间。对于一个线阵,这个最大值是当一个信号沿着阵列的轴线传播时(endfire),阵列两端阵元之间的传播时间。 + +  假设原点位于阵列的重心,即 + +$$\begin{equation} + \sum_{n=0}^{N-1} \vec{p}_n = 0 +\end{equation}$$ + +则式 $\eqref{RelativeDelayWithDirectionCosine}$ 给出的所有 $\tau_n$ 均满足 + +$$\begin{equation} + \tau_n \leqslant \Delta T_{\max},\, n = 0, \cdots, N-1 +\end{equation}$$ + +  在我们感兴趣的大多数情况下,复包络的带宽非常小,满足 + +$$\begin{equation} + \tilde{f}(t - \tau_n) \simeq \tilde{f}(t),\, n = 0, \cdots, N-1 +\end{equation}$$ + +为了使上述近似有效,需要有 + +$$\begin{equation} \label{NarrowBandConstraint} + B_\mathrm{s}\cdot \Delta T_{\max} \ll 1 +\end{equation}$$ + +定义复包络满足式 $\eqref{NarrowBandConstraint}$ 的带通信号为**{% label primary @窄带信号 %}**。后面我们会在有关最优处理器的内容中重新研究这个定义,并给出一个更好的量化的讨论。现在,直接采用式 $\eqref{NarrowBandConstraint}$ 。则式 $\eqref{BandpassConstraintApproximation}$ 简化为 + +$$\begin{equation} + f\left( t,\vec{p}_n \right) = \sqrt{2} \Re\left\{ \tilde{f} \left( t \right) e^{-j \omega_c \tau_n} e^{j \omega_c t } \right\} +\end{equation}$$ + +可以看到,在窄带的情况下,信号的延时可以用一个相移来近似。所以延时-求和波束形成器可以用一组移相器来代替延时线。结果得到的波束形成器在[图 1-1-6](#fig.1-1-6) 中给出。这种实现方式通常称为**{% label primary @相控阵 %}**,并在实际中得到了广泛的应用。 + + + +![图 1-1-6 利用移相器实现的窄带波束形成器](https://josh-blog-1257563604.cos.ap-beijing.myqcloud.com/img/2023-04-18-josh-oap-part-1-1/2023-04-18-josh-oap-part-1-1-060-NarrowbandBeamformerImplementedUsingPhaseShifters.png!sign){width=600px} + +  可以发现,在很多的应用中,我们都想要调整每个传感器输出的增益和相位,以得到一个理想的波束方向图。这就产生了在[图 1-1-6(a)](#fig.1-1-6) 中给出的窄带模型。$w_n^\ast$ 是复权值,可以用一个增益和移相器的级联来实现,如[图 1-1-6(b)](#fig.1-1-6) 所示。 + + + +![图 1-1-7 一般窄带波束形成器](https://josh-blog-1257563604.cos.ap-beijing.myqcloud.com/img/2023-04-18-josh-oap-part-1-1/2023-04-18-josh-oap-part-1-1-070-GeneralNarrowbandBeamformer.png!sign){width=600px} + +  另外一种实现的结构见[图 1-1-6(c)](#fig.1-1-6)。在一些情况下,我们利用正交解调,并在对基带信号进行复加权来实现波束形成器,实际是在一个正交分量上使用 $\Re[w_n^\ast]$ 进行加权,在另外一个正交分量上使用 $\Im[w_n^\ast]$ 进行加权,结果是相等的。 + +  定义一个复数权矢量为 + +$$\begin{equation} \label{ComplexWeightVector} + \vec{w}^\mathrm{H} = [w_0^\ast, w_1^\ast, \cdots, w_{N-1}^\ast] +\end{equation}$$ + +则式 $\eqref{ArrayResponseToUnitPlaneWaveInTimeDomain}$ 成为 + +$$\begin{equation} + y\left( t,\vec{k} \right) = \vec{w}^\mathrm{H} \vec{v}_{\vec{k}}\left( \vec{k} \right) e^{j\omega t} +\end{equation}$$ + +且 + +$$\begin{equation} + \varUpsilon \left(\omega, \vec{k} \right) = \vec{w}^\mathrm{H} \vec{v}_{\vec{k}}\left( \vec{k} \right) +\end{equation}$$ + +式 $\eqref{ComplexWeightVector}$ 中的定义等价于 + +$$\begin{equation} + \vec{w}^\mathrm{H} = \vec{H}^\mathrm{T}(\omega_c) +\end{equation}$$ + +这里主要关注的是窄带模型,对于宽带信号,一种处理方法是利用离散傅里叶变换(DFT)把信号分解到更窄的频率柜 (frequency bin),每个频率柜内的信号是满足窄带条件的,因此所有的窄带结果可以直接得到应用。 diff --git a/source/_posts/_config.next.yml b/source/_posts/_config.next.yml deleted file mode 100644 index 63646e7..0000000 --- a/source/_posts/_config.next.yml +++ /dev/null @@ -1,924 +0,0 @@ -# =============================================================== -# It's recommended to use Alternate Theme Config to configure NexT -# Modifying this file may result in merge conflict -# See: https://theme-next.js.org/docs/getting-started/configuration -# =============================================================== - -# --------------------------------------------------------------- -# Theme Core Configuration Settings -# See: https://theme-next.js.org/docs/theme-settings/ -# --------------------------------------------------------------- - -# Allow to cache content generation. -cache: - enable: true - -# Remove unnecessary files after hexo generate. -minify: true - -# Define custom file paths. -# Create your custom files in site directory `source/_data` and uncomment needed files below. -custom_file_path: - #head: source/_data/head.njk - #header: source/_data/header.njk - sidebar: source/_data/sidebar.njk - #postMeta: source/_data/post-meta.njk - #postBodyEnd: source/_data/post-body-end.njk - #footer: source/_data/footer.njk - #bodyEnd: source/_data/body-end.njk - variable: source/_data/variables.styl - #mixin: source/_data/mixins.styl - style: source/_data/styles.styl - - -# --------------------------------------------------------------- -# Scheme Settings -# --------------------------------------------------------------- - -# Schemes -#scheme: Muse -#scheme: Mist -#scheme: Pisces -scheme: Gemini - -# Dark Mode -darkmode: true - - -# --------------------------------------------------------------- -# Site Information Settings -# --------------------------------------------------------------- - -favicon: - small: /images/favicon-16x16-j.png - medium: /images/favicon-32x32-j.png - apple_touch_icon: /images/apple-touch-icon-j.png - safari_pinned_tab: /images/favicon-j.svg - #android_manifest: /manifest.json - -# Custom Logo (Warning: Do not support scheme Mist) -custom_logo: #/uploads/custom-logo.jpg - -# Creative Commons 4.0 International License. -# See: https://creativecommons.org/about/cclicenses/ -creative_commons: - # Available values: by | by-nc | by-nc-nd | by-nc-sa | by-nd | by-sa | cc-zero - license: by-nc-sa - # Available values: big | small - size: small - sidebar: false - post: true - # You can set a language value if you prefer a translated version of CC license, e.g. deed.zh - # CC licenses are available in 39 languages, you can find the specific and correct abbreviation you need on https://creativecommons.org - language: deed.zh - -# Open graph settings -# See: https://hexo.io/docs/helpers#open-graph -open_graph: - enable: true - options: - #twitter_card: - #twitter_id: - #twitter_site: - #twitter_image: - #google_plus: - #fb_admins: - #fb_app_id: - - -# --------------------------------------------------------------- -# Menu Settings -# --------------------------------------------------------------- - -# Usage: `Key: /link/ || icon` -# Key is the name of menu item. If the translation for this item is available, the translated text will be loaded, otherwise the Key name will be used. Key is case-sensitive. -# Value before `||` delimiter is the target link, value after `||` delimiter is the name of Font Awesome icon. -# External url should start with http:// or https:// -menu: - home: / || fa fa-home - about: /about/ || fa fa-user - tags: /tags/ || fa fa-tags - categories: /categories/ || fa fa-th - archives: /archives/ || fa fa-archive - #schedule: /schedule/ || fa fa-calendar - #sitemap: /sitemap.xml || fa fa-sitemap - #commonweal: /404/ || fa fa-heartbeat - -# Enable / Disable menu icons / item badges. -menu_settings: - icons: true - badges: true - - -# --------------------------------------------------------------- -# Sidebar Settings -# See: https://theme-next.js.org/docs/theme-settings/sidebar -# --------------------------------------------------------------- - -sidebar: - # Sidebar Position. - position: left - #position: right - - # Manual define the sidebar width. If commented, will be default for: - # Muse | Mist: 320 - # Pisces | Gemini: 240 - width: 260 - - # Sidebar Display (only for Muse | Mist), available values: - # - post expand on posts automatically. Default. - # - always expand for all pages automatically. - # - hide expand only when click on the sidebar toggle icon. - # - remove totally remove sidebar including sidebar toggle. - display: post - - # Sidebar padding in pixels. - padding: 12 - # Sidebar offset from top menubar in pixels (only for Pisces | Gemini). - offset: 12 - -# Sidebar Avatar -avatar: - # Replace the default image and set the url here. - url: /images/favicon-j.svg - # If true, the avatar will be displayed in circle. - rounded: true - # If true, the avatar will be rotated with the cursor. - rotated: false - -# Posts / Categories / Tags in sidebar. -site_state: true - -# Social Links -# Usage: `Key: permalink || icon` -# Key is the link label showing to end users. -# Value before `||` delimiter is the target permalink, value after `||` delimiter is the name of Font Awesome icon. -social: - GitHub: https://github.com/JoshGao-bit || fab fa-github - E-Mail: mailto:josh_gao@foxmail.com || fa fa-envelope - #Weibo: https://weibo.com/yourname || fab fa-weibo - #Google: https://plus.google.com/yourname || fab fa-google - #Twitter: https://twitter.com/josh_gao || fab fa-twitter - #FB Page: https://www.facebook.com/yourname || fab fa-facebook - #StackOverflow: https://stackoverflow.com/yourname || fab fa-stack-overflow - #YouTube: https://youtube.com/yourname || fab fa-youtube - #Instagram: https://instagram.com/yourname || fab fa-instagram - #Skype: skype:yourname?call|chat || fab fa-skype - CSDN: https://blog.csdn.net/weixin_43870101 || fab fa-cuttlefish - -social_icons: - enable: true - icons_only: false - transition: false - -# Blog rolls -links_settings: - icon: fa fa-link - title: Links - # Available values: block | inline - layout: block - -links: - #Title: https://example.com - -# Table of Contents in the Sidebar -# Front-matter variable (nonsupport wrap expand_all). -toc: - enable: true - # Automatically add list number to toc. - number: true - # If true, all words will placed on next lines if header width longer then sidebar width. - wrap: false # controlled only by top level - # If true, all level of TOC in a post will be displayed, rather than the activated part of it. - expand_all: false # controlled only by top level - # Maximum heading depth of generated toc. - max_depth: 4 - - -# --------------------------------------------------------------- -# Footer Settings -# See: https://theme-next.js.org/docs/theme-settings/footer -# --------------------------------------------------------------- - -# Show multilingual switcher in footer. -language_switcher: false - -footer: - # Specify the year when the site was setup. If not defined, current year will be used. - since: 2020 - - # Icon between year and copyright info. - icon: - # Icon name in Font Awesome. See: https://fontawesome.com/icons - name: fa fa-heart - # If you want to animate the icon, set it to true. - animated: false - # Change the color of icon, using Hex Code. - color: "#ff0000" - - # If not defined, `author` from Hexo `_config.yml` will be used. - copyright: - - # Powered by Hexo & NexT - powered: true - - # Beian ICP and gongan information for Chinese users. See: https://beian.miit.gov.cn, http://www.beian.gov.cn - beian: - enable: true - icp: 京ICP备2022006859号-1 - # The digit in the num of gongan beian. - gongan_id: 11010802039063 - # The full num of gongan beian. - gongan_num: 京公网安备11010802039063号 - # The icon for gongan beian. See: http://www.beian.gov.cn/portal/download - gongan_icon_url: https://josh-blog-1257563604.cos.ap-beijing.myqcloud.com/img/MIsc/%E5%A4%87%E6%A1%88%E5%9B%BE%E6%A0%87.png - - -# --------------------------------------------------------------- -# Post Settings -# See: https://theme-next.js.org/docs/theme-settings/posts -# --------------------------------------------------------------- - -# Use `description` in front-matter to specify post excerpt. -excerpt_description: true - -# Read more button -# If true, the read more button will be displayed in excerpt section. -read_more_btn: true - -# Post meta display settings -post_meta: - item_text: true - created_at: true - updated_at: - enable: true - another_day: true - categories: true - -# Post c display settings -# Dependencies: https://github.com/next-theme/hexo-word-counter -symbols_count_time: - separated_meta: true - item_text_total: true - -# Use icon instead of the symbol # to indicate the tag at the bottom of the post -tag_icon: true - -# Donate (Sponsor) settings -# Front-matter variable (nonsupport animation). -reward_settings: - # If true, a donate button will be displayed in every article by default. - enable: false - animation: false - #comment: Buy me a coffee - -reward: - #wechatpay: /images/wechatpay.png - #alipay: /images/alipay.png - #paypal: /images/paypal.png - #bitcoin: /images/bitcoin.png - -# Subscribe through Telegram Channel, Twitter, etc. -# Usage: `Key: permalink || icon` (Font Awesome) -follow_me: - #Twitter: https://twitter.com/username || fab fa-twitter - #Telegram: https://t.me/channel_name || fab fa-telegram - #WeChat: /images/wechat_channel.png || fab fa-weixin - #RSS: /atom.xml || fa fa-rss - -# Related popular posts -# Dependencies: https://github.com/sergeyzwezdin/hexo-related-posts -related_posts: - enable: true - title: # Custom header, leave empty to use the default one - display_in_home: false - -# Post edit -# Easily browse and edit blog source code online. -post_edit: - enable: false - url: https://github.com/JoshGao-bit/JoshGao-bit.github.io/tree/src/source/ # Link for view source - #url: https://github.com/user-name/repo-name/edit/branch-name/subdirectory-name/ # Link for fork & edit - -# Show previous post and next post in post footer if exists -# Available values: left | right | false -post_navigation: left - - -# --------------------------------------------------------------- -# Custom Page Settings -# See: https://theme-next.js.org/docs/theme-settings/custom-pages -# --------------------------------------------------------------- - -# TagCloud settings for tags page. -tagcloud: - min: 12 # Minimum font size in px - max: 30 # Maximum font size in px - amount: 200 # Total amount of tags - orderby: name # Order of tags - order: 1 # Sort order - -# Google Calendar -# Share your recent schedule to others via calendar page. -calendar: - calendar_id: # Your Google account E-Mail - api_key: - orderBy: startTime - showLocation: false - offsetMax: 72 # Time Range - offsetMin: 4 # Time Range - showDeleted: false - singleEvents: true - maxResults: 250 - - -# --------------------------------------------------------------- -# Misc Theme Settings -# See: https://theme-next.js.org/docs/theme-settings/miscellaneous -# --------------------------------------------------------------- - -# Preload styles and preconnect CDN for fonts and plugins. -# For more information: https://www.w3.org/TR/resource-hints/#preconnect -preconnect: true - -# Set the text alignment in posts / pages. -text_align: - # Available values: start | end | left | right | center | justify | justify-all | match-parent - desktop: justify - mobile: justify - -# Reduce padding / margin indents on devices with narrow width. -mobile_layout_economy: true - -# Browser header panel color. -theme_color: - light: "#222" - dark: "#222" - -# Override browsers' default behavior. -body_scrollbar: - # Place the scrollbar over the content. - overlay: false - # Present the scrollbar even if the content is not overflowing. - stable: false - -codeblock: - # Code Highlight theme - # All available themes: https://theme-next.js.org/highlight/ - theme: - light: default - dark: github-dark - prism: - light: prism - dark: prism-dark - # Add copy button on codeblock - copy_button: - enable: true - # Available values: default | flat | mac - style: mac - -back2top: - enable: true - # Back to top in sidebar. - sidebar: true - # Scroll percent label in b2t button. - scrollpercent: true - -# Reading progress bar -reading_progress: - enable: true - # Available values: left | right - start_at: left - # Available values: top | bottom - position: top - reversed: false - color: "#37c6c0" - height: 3px - -# Bookmark Support -bookmark: - enable: true - # Customize the color of the bookmark. - color: "#222" - # If auto, save the reading progress when closing the page or clicking the bookmark-icon. - # If manual, only save it by clicking the bookmark-icon. - save: auto - -# `Follow me on GitHub` banner in the top-right corner. -github_banner: - enable: true - permalink: https://github.com/JoshGao-bit - - -# --------------------------------------------------------------- -# Font Settings -# --------------------------------------------------------------- -# Find fonts on Google Fonts (https://fonts.google.com) -# All fonts set here will have the following styles: -# light | light italic | normal | normal italic | bold | bold italic -# Be aware that setting too much fonts will cause site running slowly -# --------------------------------------------------------------- -# Web Safe fonts are recommended for `global` (and `title`): -# Arial | Tahoma | Helvetica | Times New Roman | Courier New | Verdana | Georgia | Palatino | Garamond | Comic Sans MS | Trebuchet MS -# --------------------------------------------------------------- - -font: - enable: true - - # Uri of fonts host, e.g. https://fonts.googleapis.com (Default). - host: - - # Font options: - # `external: true` will load this font family from `host` above. - # `family: Times New Roman`. Without any quotes. - # `size: x.x`. Use `em` as unit. Default: 1 (16px) - - # Global font settings used for all elements inside . - global: - external: true - family: Noto Serif, Noto Serif SC - size: - - # Font settings for site title (.site-title). - title: - external: true - family: Dancing Script - size: 4 - - # Font settings for headlines (

to

). - headings: - external: false - family: - size: - - # Font settings for posts (.post-body). - posts: - external: false - family: - - # Font settings for and code blocks. - codes: - external: false - family: - - -# --------------------------------------------------------------- -# SEO Settings -# See: https://theme-next.js.org/docs/theme-settings/seo -# --------------------------------------------------------------- - -# If true, site-subtitle will be added to the title of index page. -# Remember to set up your site-subtitle in Hexo `_config.yml` (e.g. subtitle: Subtitle) -index_with_subtitle: false - -# Automatically add external URL with Base64 encrypt & decrypt. -exturl: false -# If true, an icon will be attached to each external URL -exturl_icon: true - -# Google Webmaster tools verification. -# See: https://developers.google.com/search -google_site_verification: Iqgmf1lNNM2SYvtW-6MExzBfoISxK8nBEcwfPGM8giU - -# Bing Webmaster tools verification. -# See: https://www.bing.com/webmasters -bing_site_verification: - -# Yandex Webmaster tools verification. -# See: https://webmaster.yandex.ru -yandex_site_verification: - -# Baidu Webmaster tools verification. -# See: https://ziyuan.baidu.com/site -baidu_site_verification: codeva-qqFHulQHkE - - -# --------------------------------------------------------------- -# Tags Settings -# See: https://theme-next.js.org/docs/tag-plugins/ -# --------------------------------------------------------------- - -# Note tag (bootstrap callout) -note: - # Note tag style values: - # - simple bootstrap callout old alert style. Default. - # - modern bootstrap callout new (v2-v3) alert style. - # - flat flat callout style with background, like on Mozilla or StackOverflow. - # - disabled disable all CSS styles import of note tag. - style: flat - icons: true - # Offset lighter of background in % for modern and flat styles (modern: -12 | 12; flat: -18 | 6). - # Offset also applied to label tag variables. This option can work with disabled note tag. - light_bg_offset: -3 - -# Tabs tag -tabs: - # Make the nav bar of tabs with long content stick to the top. - sticky: false - transition: - tabs: false - labels: true - -# PDF tag -# NexT will try to load pdf files natively, if failed, pdf.js will be used. -# So, you have to install the dependency of pdf.js if you want to use pdf tag and make it available to all browsers. -# Dependencies: https://github.com/next-theme/theme-next-pdf -pdf: - enable: false - # Default height - height: 500px - -# Mermaid tag -mermaid: - enable: false - # Available themes: default | dark | forest | neutral - theme: - light: forest - dark: dark - - -# --------------------------------------------------------------- -# Third Party Plugins & Services Settings -# See: https://theme-next.js.org/docs/third-party-services/ -# More plugins: https://github.com/next-theme/awesome-next -# --------------------------------------------------------------- - -# --------------------------------------------------------------- -# Math Formulas Render Support -# See: https://theme-next.js.org/docs/third-party-services/math-equations -# Warning: Please install / uninstall the relevant renderer according to the documentation. -# Server-side plugin: https://github.com/next-theme/hexo-filter-mathjax -# --------------------------------------------------------------- - -math: - # Default (false) will load mathjax / katex script on demand. - # That is it only render those page which has `mathjax: true` in front-matter. - # If you set it to true, it will load mathjax / katex script EVERY PAGE. - every_page: false - - mathjax: - enable: true - # Available values: none | ams | all - tags: ams - - katex: - enable: false - # See: https://github.com/KaTeX/KaTeX/tree/master/contrib/copy-tex - copy_tex: false - - -# --------------------------------------------------------------- -# External Libraries -# See: https://theme-next.js.org/docs/third-party-services/external-libraries -# --------------------------------------------------------------- - -# Easily enable fast Ajax navigation on your website. -# For more information: https://github.com/next-theme/pjax -pjax: true - -# FancyBox is a tool that offers a nice and elegant way to add zooming functionality for images. -# For more information: https://fancyapps.com/fancybox/ -fancybox: true - -# Medium Zoom is a JavaScript library for zooming images like Medium. -# Warning: Do not enable both `fancybox` and `mediumzoom`. -# For more information: https://medium-zoom.francoischalifour.com -mediumzoom: false - -# Vanilla JavaScript plugin for lazyloading images. -# For more information: https://apoorv.pro/lozad.js/demo/ -lazyload: true - -# Automatically insert whitespace between CJK and half-width characters. -# For more information: https://github.com/vinta/pangu.js -# Server-side plugin: https://github.com/next-theme/hexo-pangu -pangu: true - -# Prefetch links based on what is in the user's viewport. -# For more information: https://getquick.link -# Front-matter variable (nonsupport home archive). -quicklink: - enable: true - - # Home page and archive page can be controlled through home and archive options below. - # This configuration item is independent of `enable`. - home: true - archive: true - - # Default (true) will initialize quicklink after the load event fires. - delay: true - # Custom a time in milliseconds by which the browser must execute prefetching. - timeout: 3000 - # Default (true) will attempt to use the fetch() API if supported (rather than link[rel=prefetch]). - priority: true - - -# --------------------------------------------------------------- -# Animation Settings -# --------------------------------------------------------------- - -# Use Animate.css to animate everything. -# For more information: https://animate.style -motion: - enable: true - async: false - transition: - # All available transition variants: https://theme-next.js.org/animate/ - menu_item: fadeInDown - post_block: slideRightBigIn - post_header: perspectiveLeftIn - post_body: slideDownIn - coll_header: slideLeftIn - # Only for Pisces | Gemini. - sidebar: slideLeftIn - -# Progress bar in the top during page loading. -# For more information: https://github.com/CodeByZach/pace -pace: - enable: true - # All available colors: - # black | blue | green | orange | pink | purple | red | silver | white | yellow - color: blue - # All available themes: - # big-counter | bounce | barber-shop | center-atom | center-circle | center-radar | center-simple - # corner-indicator | fill-left | flat-top | flash | loading-bar | mac-osx | material | minimal - theme: corner-indicator - -# Generate a ribbon in your website with HTML5 canvas. -# For more information: https://github.com/hustcc/ribbon.js -canvas_ribbon: - enable: false - size: 300 # The width of the ribbon - alpha: 0.6 # The transparency of the ribbon - zIndex: -1 # The display level of the ribbon - - -# --------------------------------------------------------------- -# Comments Settings -# See: https://theme-next.js.org/docs/third-party-services/comments -# --------------------------------------------------------------- - -# Multiple Comment System Support -comments: - # Available values: tabs | buttons - style: tabs - # Choose a comment system to be displayed by default. - # Available values: disqus | disqusjs | changyan | livere | gitalk | utterances - active: gitalk - # Setting `true` means remembering the comment system selected by the visitor. - storage: true - # Lazyload all comment systems. - lazyload: false - # Modify texts or order for any naves, here are some examples. - nav: - #disqus: - # text: Load Disqus - # order: -1 - #gitalk: - # order: -2 - -# Disqus -# For more information: https://disqus.com -disqus: - enable: false - shortname: - count: true - -# DisqusJS -# For more information: https://disqusjs.skk.moe -disqusjs: - enable: false - # API Endpoint of Disqus API (https://disqus.com/api/docs/). - # Leave api empty if you are able to connect to Disqus API. Otherwise you need a reverse proxy for it. - # For example: - # api: https://disqus.skk.moe/disqus/ - api: - apikey: # Register new application from https://disqus.com/api/applications/ - shortname: # See: https://disqus.com/admin/settings/general/ - -# Changyan -# For more information: https://changyan.kuaizhan.com -changyan: - enable: false - appid: cywCjT2Ce - appkey: c413e82874f27a2ebad90047ce54c0c1 - # Show comments count - count: true - -# LiveRe comments system -# You can get your uid from https://livere.com/insight/myCode (General web site) -livere_uid: # - -# Gitalk -# For more information: https://gitalk.github.io -gitalk: - enable: true - github_id: JoshGao-bit # GitHub repo owner - repo: Josh-Blog-Comment # Repository name to store issues - client_id: eb4dc2ea750519598663 # GitHub Application Client ID - client_secret: 4fe0fb49aeb8fac49c609796b214a99a6df044cf # GitHub Application Client Secret - admin_user: JoshGao-bit # GitHub repo owner and collaborators, only these guys can initialize gitHub issues - distraction_free_mode: true # Facebook-like distraction free mode - # When the official proxy is not available, you can change it to your own proxy address - proxy: https://cors-anywhere.azm.workers.dev/https://github.com/login/oauth/access_token # This is official proxy address - # Gitalk's display language depends on user's browser or system environment - # If you want everyone visiting your site to see a uniform language, you can set a force language value - # Available values: en | es-ES | fr | ru | zh-CN | zh-TW - language: en | es-ES | fr | ru | zh-CN | zh-TW - -# Utterances -# For more information: https://utteranc.es -utterances: - enable: false - repo: user-name/repo-name # Github repository owner and name - # Available values: pathname | url | title | og:title - issue_term: pathname - # Available values: github-light | github-dark | preferred-color-scheme | github-dark-orange | icy-dark | dark-blue | photon-dark | boxy-light - theme: github-light - -# Isso -# For more information: https://isso-comments.de -isso: # - - -# --------------------------------------------------------------- -# Post Widgets & Content Sharing Services -# See: https://theme-next.js.org/docs/third-party-services/post-widgets -# --------------------------------------------------------------- - -# AddThis Share. See: https://www.addthis.com -# Go to https://www.addthis.com/dashboard to customize your tools. -add_this_id: - - -# --------------------------------------------------------------- -# Statistics and Analytics -# See: https://theme-next.js.org/docs/third-party-services/statistics-and-analytics -# --------------------------------------------------------------- - -# Google Analytics -# See: https://analytics.google.com -google_analytics: - tracking_id: G-FS8FDJ89QM - # By default, NexT will load an external gtag.js script on your site. - # If you only need the pageview feature, set the following option to true to get a better performance. - only_pageview: false - -# Baidu Analytics -# See: https://tongji.baidu.com -baidu_analytics: 350182f3e243a2a441aad7e64040d3ce - -# Growingio Analytics -# See: https://www.growingio.com -growingio_analytics: # - -# Cloudflare Web Analytics -# See: https://www.cloudflare.com/web-analytics/ -cloudflare_analytics: 97f59b7e4ea54bd79d9c911c06f990de - -# Microsoft Clarity Analytics -# See: https://clarity.microsoft.com/ -clarity_analytics: # - -# Matomo Analytics -# See: https://matomo.org/ -matomo: - enable: false - server_url: # https://www.example.com/ - site_id: # - -# Umami Analytics -# See: https://umami.is/ -umami: - enable: false - script_url: # https://umami.example.com/script.js - website_id: # - -# Plausible Analytics -# See: https://plausible.io/ -plausible: - enable: false - script_url: # https://plausible.io/js/script.js - site_domain: # www.example.com - -# Show number of visitors of each article. -# You can visit https://www.leancloud.cn to get AppID and AppKey. -leancloud_visitors: - enable: false - app_id: # - app_key: # - # Required for apps from CN region - server_url: # - # Dependencies: https://github.com/theme-next/hexo-leancloud-counter-security - # If you don't care about security in leancloud counter and just want to use it directly - # (without hexo-leancloud-counter-security plugin), set `security` to `false`. - security: true - -# Another tool to show number of visitors to each article. -# Visit https://console.firebase.google.com/u/0/ to get apiKey and projectId. -# Visit https://firebase.google.com/docs/firestore/ to get more information about firestore. -firestore: - enable: false - collection: articles # Required, a string collection name to access firestore database - apiKey: # Required - projectId: # Required - -# Show Views / Visitors of the website / page with busuanzi. -# For more information: http://ibruce.info/2015/04/04/busuanzi/ -busuanzi_count: - enable: true - total_visitors: true - total_visitors_icon: fa fa-user - total_views: true - total_views_icon: fa fa-eye - post_views: true - post_views_icon: far fa-eye - - -# --------------------------------------------------------------- -# Search Services -# See: https://theme-next.js.org/docs/third-party-services/search-services -# --------------------------------------------------------------- - -# Algolia Search -# For more information: https://www.algolia.com -algolia_search: - enable: false - hits: - per_page: 10 - -# Local Search -# Dependencies: https://github.com/next-theme/hexo-generator-searchdb -local_search: - enable: true - # If auto, trigger search by changing input. - # If manual, trigger search by pressing enter key or search button. - trigger: auto - # Show top n results per article, show all results by setting to -1 - top_n_per_article: 1 - # Unescape html strings to the readable one. - unescape: false - # Preload the search data when the page loads. - preload: false - - -# --------------------------------------------------------------- -# Chat Services -# See: https://theme-next.js.org/docs/third-party-services/chat-services -# --------------------------------------------------------------- - -# A button to open designated chat widget in sidebar. -# Firstly, you need to enable and configure the chat service. -chat: - enable: false - icon: fa fa-comment # Icon name in Font Awesome, set false to disable icon. - -# Chatra is a functional, easy to use piece of chat software for websites. -# For more information: https://chatra.com -# Dashboard: https://app.chatra.io/settings/general -chatra: - enable: false - async: true - id: # Visit Dashboard to get your ChatraID - #embed: # Unfinished experimental feature for developers. See: https://chatra.com/help/api/#injectto - -# Tidio is a powerful, all-in-one customer service tool. -# For more information: https://www.tidio.com -# Dashboard: https://www.tidio.com/panel/dashboard -tidio: - enable: false - key: # Public Key, get it from dashboard. See: https://www.tidio.com/panel/settings/developer - -# Gitter is a chat and networking platform. -# For more information: https://gitter.im -gitter: - enable: false - room: - - -# --------------------------------------------------------------- -# CDN Settings -# See: https://theme-next.js.org/docs/advanced-settings/vendors -# --------------------------------------------------------------- - -vendors: - # The CDN provider of NexT internal scripts. - # Available values: local | jsdelivr | unpkg | cdnjs | custom - # Warning: If you are using the latest master branch of NexT, please set `internal: local` - internal: local - # The default CDN provider of third-party plugins. - # Available values: local | jsdelivr | unpkg | cdnjs | custom - # Dependencies for `plugins: local`: https://github.com/next-theme/plugins - plugins: local - # Custom CDN URL - # For example: - # custom_cdn_url: https://cdn.jsdelivr.net/npm/${npm_name}@${version}/${minified} - # custom_cdn_url: https://cdnjs.cloudflare.com/ajax/libs/${cdnjs_name}/${version}/${cdnjs_file} - custom_cdn_url: - -# Assets -# Accelerate delivery of static files using a CDN -# The js option is only valid when vendors.internal is local. -css: css -js: js -images: images