SS-MUSIC

news2024/11/10 22:41:11

SS-MUSIC

  • 相干信号源带来的缺秩问题
  • 什么是中心对称阵列
  • 什么是前后向平均技术
  • 什么是 SS-MUSIC 算法
  • SS-MUSIC 能解相干的原因
  • SS-MUSIC 改进算法
  • 总结
  • 参考文献

  本文讨论针对一维均匀线阵(ULA,Uniform Linear Array)的空间平滑 MUSIC(SS-MUSIC,Spatial Smoothing MUSIC)算法12,同时为了方便公式推导,后续的模型建立在无噪环境下。

相干信号源带来的缺秩问题

  假设 K > 1 K>1 K>1 个信号源为同一组完全相干的信号源,即 s k ( t ) = c k s 1 ( t ) s_k(t) = c_ks_1(t) sk(t)=cks1(t),其中 k = 2 , ⋯   , K k = 2,\cdots,K k=2,,K 以及 t = 1 , ⋯   , T t = 1,\cdots,T t=1,,T。令 c = [ 1 , c 2 , ⋯   , c K ] T ∈ C K × 1 \mathbf{c} = [1,c_2,\cdots,c_K]^T\in\mathbb{C}^{K\times 1} c=[1,c2,,cK]TCK×1 可得到:
R s = 1 T S S H = 1 T c s 1 s 1 H c H = σ 1 2 c c H \begin{aligned} \mathbf{R}_{\mathrm{s}}&=\frac{1}{T}\mathbf{S}\mathbf{S}^H\\ &=\frac{1}{T}\mathbf{c}\mathbf{s}_1\mathbf{s}_1^H\mathbf{c}^H\\ &=\sigma_1^2\mathbf{c}\mathbf{c}^H \end{aligned} Rs=T1SSH=T1cs1s1HcH=σ12ccH
其中 s 1 ∈ C 1 × T \mathbf{s}_1\in\mathbb{C}^{1\times T} s1C1×T 代表第一个阵元的采样序列。为了简化后续推导,我们令 σ 1 2 = 1 \sigma_1^2=1 σ12=1 即可得到 R s = c c H ∈ C K × K \mathbf{R}_{\mathrm{s}} = \mathbf{c}\mathbf{c}^H\in\mathbb{C}^{K\times K} Rs=ccHCK×K,因此 r a n k ( R s ) = 1 < K \mathrm{rank}(\mathbf{R}_{\mathrm{s}}) = 1 < K rank(Rs)=1<K,即 R s \mathbf{R}_{\mathrm{s}} Rs 不满秩,此时直接对 R = A R s A H \mathbf{R} = \mathbf{A}\mathbf{R}_{\mathrm{s}}\mathbf{A}^H R=ARsAH 进行 MUSIC 估计会失效。

什么是中心对称阵列

  中心对称阵列(Centro-Symmetric Array)是指空间中存在一个参考点,使得每个阵元在关于该参考点的对称位置上,都有另一个相对应的阵元。ULA 就是最经典的一维中心对称阵列,对于 ULA 而言,该参考点就是阵列的中心点。假设空间中存在一组由 M M M 个阵元组成的 ULA,其坐标索引为 { 0 , 1 , ⋯   , M − 1 } \{0,1,\cdots,M-1\} {0,1,,M1},此时方向矢量 a ( φ ) ∈ C M × 1 \mathbf{a}(\varphi)\in\mathbb{C}^{M\times 1} a(φ)CM×1 可表示如下:
a ( φ ) = [ 1 e − j φ ⋮ e − j ( M − 1 ) φ ] \mathbf{a}(\varphi) = \begin{bmatrix} 1 \\ e^{-\mathrm{j}\varphi}\\ \vdots \\ e^{-\mathrm{j}(M-1)\varphi} \end{bmatrix} a(φ)= 1ejφej(M1)φ
其中 φ = 2 π d sin ⁡ ( θ ) / λ \varphi = 2\pi d \sin(\theta)/\lambda φ=2πdsin(θ)/λ d d d 为相邻阵元的间距,以及 λ \lambda λ 为信号波长。方向矢量矩阵 A ∈ C M × K \mathbf{A}\in\mathbb{C}^{M\times K} ACM×K 可表示如下:
A = [ a ( φ 1 ) , a ( φ 2 ) , ⋯   , a ( φ K ) ] \mathbf{A} = [\mathbf{a}(\varphi_1),\mathbf{a}(\varphi_2),\cdots,\mathbf{a}(\varphi_K)] A=[a(φ1),a(φ2),,a(φK)]
  ULA 的方向矢量 a ( φ ) \mathbf{a}(\varphi) a(φ) 满足下式:
J a ( φ ) = e − j ( M − 1 ) φ a ∗ ( φ ) \mathbf{J}\mathbf{a}(\varphi) = e^{-\mathrm{j}(M-1)\varphi}\mathbf{a}^*(\varphi) Ja(φ)=ej(M1)φa(φ)
其中 J ∈ R M × M \mathbf{J}\in\mathbb{R}^{M\times M} JRM×M 代表反对角矩阵。不难得出 A \mathbf{A} A 满足下式:
J A = A ∗ Φ M − 1 \mathbf{J}\mathbf{A} = \mathbf{A}^*\Phi^{M-1} JA=AΦM1
其中 Φ ∈ C K × K \Phi\in\mathbb{C}^{K\times K} ΦCK×K 为对角矩阵:
Φ = [ e − j φ 1 ⋱ e − j φ K ] \Phi = \begin{bmatrix} e^{-\mathrm{j}\varphi_1} && \\ &\ddots&\\ &&e^{-\mathrm{j}\varphi_K} \end{bmatrix} Φ= ejφ1ejφK

什么是前后向平均技术

  前后向平均(Forward Backward Averaging)技术针对中心对称阵列,前后向协方差矩阵 R f b \mathbf{R}_{\mathrm{fb}} Rfb 表示如下:
R f b = 1 2 ( R f + R b ) = 1 2 ( R + J R ∗ J ) \mathbf{R}_{\mathrm{fb}} = \frac{1}{2}(\mathbf{R}_{\mathrm{f}}+\mathbf{R}_{\mathrm{b}})=\frac{1}{2}(\mathbf{R}+\mathbf{J}\mathbf{R}^{*}\mathbf{J}) Rfb=21(Rf+Rb)=21(R+JRJ)
其中 R f = R \mathbf{R}_{\mathrm{f}}=\mathbf{R} Rf=R R b = J R ∗ J \mathbf{R}_{\mathrm{b}} = \mathbf{J}\mathbf{R}^{*}\mathbf{J} Rb=JRJ 分别表示为前向协方差矩阵和后向协方差矩阵。代入 R = A R s A H \mathbf{R} = \mathbf{A}\mathbf{R}_{\mathrm{s}}\mathbf{A}^{H} R=ARsAH 可得到:
R f b = 1 2 ( A R s A H + J A ∗ R s ∗ A T J ) = 1 2 ( A R s A H + A Φ M − 1 R s ∗ Φ 1 − M A H ) = 1 2 A ( R s + Φ M − 1 R s ∗ Φ 1 − M ) A H = 1 2 A R f b s A H \begin{aligned} \mathbf{R}_{\mathrm{fb}} &= \frac{1}{2}(\mathbf{A}\mathbf{R}_{\mathrm{s}}\mathbf{A}^{H}+\mathbf{J}\mathbf{A}^{*}\mathbf{R}_{\mathrm{s}}^{*}\mathbf{A}^{T}\mathbf{J})\\ &=\frac{1}{2}(\mathbf{A}\mathbf{R}_{\mathrm{s}}\mathbf{A}^{H}+\mathbf{A}\Phi^{M-1}\mathbf{R}_{\mathrm{s}}^{*}\Phi^{1-M}\mathbf{A}^H)\\ &=\frac{1}{2}\mathbf{A}(\mathbf{R}_{\mathrm{s}}+\Phi^{M-1}\mathbf{R}_{\mathrm{s}}^{*}\Phi^{1-M})\mathbf{A}^H\\ &=\frac{1}{2}\mathbf{A}\mathbf{R}_{\mathrm{fbs}}\mathbf{A}^H \end{aligned} Rfb=21(ARsAH+JARsATJ)=21(ARsAH+AΦM1RsΦ1MAH)=21A(Rs+ΦM1RsΦ1M)AH=21ARfbsAH
其中 R f b s = R s + Φ M − 1 R s ∗ Φ 1 − M \mathbf{R}_{\mathrm{fbs}}=\mathbf{R}_{\mathrm{s}}+\Phi^{M-1}\mathbf{R}_{\mathrm{s}}^{*}\Phi^{1-M} Rfbs=Rs+ΦM1RsΦ1M。同理可得到:
R f s = R s R b s = Φ M − 1 R s ∗ Φ 1 − M \begin{aligned} \mathbf{R}_{\mathrm{fs}}&=\mathbf{R}_{\mathrm{s}} \\ \mathbf{R}_{\mathrm{bs}}&=\Phi^{M-1}\mathbf{R}_{\mathrm{s}}^{*}\Phi^{1-M} \end{aligned} RfsRbs=Rs=ΦM1RsΦ1M

  从前面相干信号的讨论中,已知 r a n k ( R s ) = 1 \mathrm{rank}(\mathbf{R}_{\mathrm{s}}) = 1 rank(Rs)=1,即 r a n k ( R f s ) = r a n k ( R b s ) = 1 \mathrm{rank}(\mathbf{R}_{\mathrm{fs}}) = \mathrm{rank}(\mathbf{R}_{\mathrm{bs}}) = 1 rank(Rfs)=rank(Rbs)=1,然而 R f b s \mathbf{R}_{\mathrm{fbs}} Rfbs 的秩并不为 1 1 1,具体推导如下:
R f b s = R s + Φ M − 1 R s ∗ Φ 1 − M = I c c H I + Φ M − 1 c c H Φ 1 − M = C 1 1 T C H + C Φ M − 1 Φ M − 1 H C H = C [ 1 Φ M − 1 ] [ 1 T Φ M − 1 H ] C H \begin{aligned} \mathbf{R}_{\mathrm{fbs}}&=\mathbf{R}_{\mathrm{s}}+\Phi^{M-1}\mathbf{R}_{\mathrm{s}}^{*}\Phi^{1-M}\\ &= \mathbf{I}\mathbf{c}\mathbf{c}^H\mathbf{I} + \Phi^{M-1}\mathbf{c}\mathbf{c}^H \Phi^{1-M} \\ &= \mathbf{C} \mathbf{1} \mathbf{1}^T\mathbf{C}^H + \mathbf{C} \varPhi_{M-1} \varPhi_{M-1}^H\mathbf{C}^H \\ &= \mathbf{C} \begin{bmatrix} \mathbf{1} & \varPhi_{M-1} \end{bmatrix} \begin{bmatrix} \mathbf{1}^T \\ \varPhi_{M-1}^H \end{bmatrix} \mathbf{C}^H \end{aligned} Rfbs=Rs+ΦM1RsΦ1M=IccHI+ΦM1ccHΦ1M=C11TCH+CΦM1ΦM1HCH=C[1ΦM1][1TΦM1H]CH
其中 C ∈ C K × K \mathbf{C}\in\mathbb{C}^{K\times K} CCK×K 代表 c ∈ C K × 1 \mathbf{c}\in\mathbb{C}^{K\times 1} cCK×1 的对角形式, Φ M − 1 ∈ C K × 1 \varPhi_{M-1}\in\mathbb{C}^{K\times 1} ΦM1CK×1 代表 Φ M − 1 ∈ C K × K \Phi^{M-1}\in\mathbb{C}^{K\times K} ΦM1CK×K 对角元素的向量形式, I \mathbf{I} I 代表单位矩阵,以及 1 \mathbf{1} 1 代表全 1 1 1 向量。显然 [ 1      Φ M − 1 ] ∈ C K × 2 [\mathbf{1}\,\,\,\,\varPhi_{M-1}]\in\mathbb{C}^{K\times 2} [1ΦM1]CK×2 的列线性无关,因此 r a n k ( R f b s ) = 2 \mathrm{rank}(\mathbf{R}_{\mathrm{fbs}}) = 2 rank(Rfbs)=2

什么是 SS-MUSIC 算法

  SS-MUSIC 算法提出切分子阵列的方式来解相干,首先将原阵列视为阵元数为 M M M 的单个连续阵列,则 SS-MUSIC 将原阵列切分为 N N N 个连续子阵列,其中每个子阵列有 P P P 个阵元。第一个子阵列包括原阵列中前 1 ∼ P 1\sim P 1P 个阵元,第二个子阵列包括原阵列中前 2 ∼ P + 1 2\sim P+1 2P+1 个阵元。不难看出 M = N + P − 1 M = N+P-1 M=N+P1。切分阵列后,再通过子阵列的互相关矩阵来进行累加,即可得到空间平滑结果。
  SS-MUSIC 又可以细分为 FSS-MUSIC、BSS-MUSIC 和 FBSS-MUSIC,它们分别针对 R f \mathbf{R}_{\mathrm{f}} Rf R b \mathbf{R}_{\mathrm{b}} Rb R f b \mathbf{R}_{\mathrm{fb}} Rfb 进行子阵列切分操作,通常情况下 FBSS-MUSIC 是最优选择。FSS-MUSIC、BSS-MUSIC 和 FBSS-MUSIC 的空间平滑结果如下:
R f s s = 1 N ∑ i = 1 N [ R f ] i i R b s s = 1 N ∑ i = 1 N [ R b ] i i R f b s s = 1 N ∑ i = 1 N [ R f b ] i i \begin{aligned} \mathbf{R}_{\mathrm{fss}} &= \frac{1}{N}\sum_{i=1}^{N} [\mathbf{R}_{\mathrm{f}}]_{ii} \\ \mathbf{R}_{\mathrm{bss}} &= \frac{1}{N}\sum_{i=1}^{N} [\mathbf{R}_{\mathrm{b}}]_{ii} \\ \mathbf{R}_{\mathrm{fbss}} &= \frac{1}{N}\sum_{i=1}^{N} [\mathbf{R}_{\mathrm{fb}}]_{ii} \end{aligned} RfssRbssRfbss=N1i=1N[Rf]ii=N1i=1N[Rb]ii=N1i=1N[Rfb]ii
其中 [ R ] i j ∈ C P × P [\mathbf{R}]_{ij}\in\mathbb{C}^{P\times P} [R]ijCP×P 表示第 i i i 个子阵列和第 j j j 个子阵列的相关矩阵:
[ R ] i j = A P Φ i − 1 R Φ 1 − j A P H [\mathbf{R}]_{ij} = \mathbf{A}_{\mathrm{P}}\Phi^{i-1}\mathbf{R}\Phi^{1-j}\mathbf{A}_{\mathrm{P}}^H [R]ij=APΦi1RΦ1jAPH
其中 i = 1 , ⋯   , N i=1,\cdots,N i=1,,N j = 1 , ⋯   , N j=1,\cdots,N j=1,,N A P \mathbf{A}_{\mathrm{P}} AP 表示 A \mathbf{A} A 的前 P P P 行。如此得到的 R f s s \mathbf{R}_{\mathrm{fss}} Rfss R b s s \mathbf{R}_{\mathrm{bss}} Rbss R f b s s \mathbf{R}_{\mathrm{fbss}} Rfbss 可直接用于 MUSIC 估计。

SS-MUSIC 能解相干的原因

  相干信号源带来的问题是信号协方差矩阵 R s \mathbf{R}_{\mathrm{s}} Rs 的秩降低了,因此 SS-MUSIC 的工作便是将 R s \mathbf{R}_{\mathrm{s}} Rs 的秩恢复为 K K K,以 R f s s \mathbf{R}_{\mathrm{fss}} Rfss 为例:
R f s s = 1 N ∑ i = 1 N [ R f ] i i = 1 N ( A P R f s A P H + ⋯ + A P Φ N − 1 R f s Φ 1 − N A P H ) = 1 N A P ( ∑ i = 1 N Φ i − 1 R f s Φ 1 − i ) A P H \begin{aligned} \mathbf{R}_{\mathrm{fss}} &= \frac{1}{N}\sum_{i=1}^{N} [\mathbf{R}_{\mathrm{f}}]_{ii} \\ &=\frac{1}{N} \left(\mathbf{A}_{\mathrm{P}}\mathbf{R}_{\mathrm{fs}}\mathbf{A}_{\mathrm{P}}^H+\cdots+\mathbf{A}_{\mathrm{P}}\Phi^{N-1}\mathbf{R}_{\mathrm{fs}}\Phi^{1-N}\mathbf{A}_{\mathrm{P}}^H\right) \\ &= \frac{1}{N} \mathbf{A}_{\mathrm{P}} \left( \sum_{i=1}^N \Phi^{i-1}\mathbf{R}_{\mathrm{fs}}\Phi^{1-i}\right)\mathbf{A}_{\mathrm{P}}^H \end{aligned} Rfss=N1i=1N[Rf]ii=N1(APRfsAPH++APΦN1RfsΦ1NAPH)=N1AP(i=1NΦi1RfsΦ1i)APH
由于 R f s = c c H \mathbf{R}_{\mathbf{fs}} = \mathbf{c}\mathbf{c}^H Rfs=ccH,我们得到:
Φ i − 1 R f s Φ 1 − i = C Φ i − 1 Φ i − 1 H C H \Phi^{i-1}\mathbf{R}_{\mathrm{fs}}\Phi^{1-i} = \mathbf{C}\varPhi_{i-1}\varPhi_{i-1}^H \mathbf{C}^H Φi1RfsΦ1i=CΦi1Φi1HCH
其中 C ∈ C K × K \mathbf{C}\in\mathbb{C}^{K\times K} CCK×K 代表 c ∈ C K × 1 \mathbf{c}\in\mathbb{C}^{K\times 1} cCK×1 的对角形式, Φ i − 1 ∈ C K × 1 \varPhi_{i-1}\in\mathbb{C}^{K\times 1} Φi1CK×1 代表 Φ i − 1 ∈ C K × K \Phi^{i-1}\in\mathbb{C}^{K\times K} Φi1CK×K 对角元素的向量形式。
  进一步化简:
R f s s = 1 N A P ( ∑ i = 1 N Φ i − 1 R f s Φ 1 − i ) A P H = 1 N A P C ( ∑ i = 1 N Φ i − 1 Φ i − 1 H ) C H A P H = 1 N A P C A N H A N C H A P H \begin{aligned} \mathbf{R}_{\mathrm{fss}} &=\frac{1}{N} \mathbf{A}_{\mathrm{P}} \left( \sum_{i=1}^N \Phi^{i-1}\mathbf{R}_{\mathrm{fs}}\Phi^{1-i}\right)\mathbf{A}_{\mathrm{P}}^H \\ &= \frac{1}{N} \mathbf{A}_{\mathrm{P}} \mathbf{C}\left( \sum_{i=1}^N \varPhi_{i-1}\varPhi_{i-1}^H\right) \mathbf{C}^H\mathbf{A}_{\mathrm{P}}^H\\ &=\frac{1}{N} \mathbf{A}_{\mathrm{P}} \mathbf{C} \mathbf{A}_{\mathrm{N}}^H\mathbf{A}_{\mathrm{N}} \mathbf{C}^H\mathbf{A}_{\mathrm{P}}^H \end{aligned} Rfss=N1AP(i=1NΦi1RfsΦ1i)APH=N1APC(i=1NΦi1Φi1H)CHAPH=N1APCANHANCHAPH
其中 A N ∈ C N × K \mathbf{A}_{\mathrm{N}}\in\mathbb{C}^{N\times K} ANCN×K 代表 A \mathbf{A} A 的前 N N N 行。通过对 R f s s \mathbf{R}_{\mathrm{fss}} Rfss 的推导,我们不难得出结论:每一次的累加,均使得 R f s s \mathbf{R}_{\mathrm{fss}} Rfss 的秩恢复 r a n k ( R f s ) = 1 \mathrm{rank}(\mathbf{R}_{\mathrm{fs}}) = 1 rank(Rfs)=1 个,故而最后 r a n k ( R f s s ) = min ⁡ ( P − 1 , N , K ) \mathrm{rank}(\mathbf{R}_{\mathrm{fss}}) = \min(P-1,N,K) rank(Rfss)=min(P1,N,K)。因此为了让 R f s s \mathbf{R}_{\mathrm{fss}} Rfss 的秩恢复为 K K K,需要保证 N ≥ K N\geq K NK P > K P>K P>K 成立。结合 M = N + P − 1 M = N+P-1 M=N+P1 我们将得到:
K ≤ 1 2 M K\leq\frac{1}{2}M K21M
即 FSS-MUSIC 至多能估计 1 2 M \frac{1}{2}M 21M 个同组的相干信号源。同理 BSS-MUSIC 也一样。
  相比于 FSS-MUSIC 和 BSS-MUSIC,FBSS-MUSIC 有更高的自由度。每一次的累加,均使得 R f b s s \mathbf{R}_{\mathrm{fbss}} Rfbss 的秩恢复 r a n k ( R f b s ) = 2 \mathrm{rank}(\mathbf{R}_{\mathrm{fbs}}) = 2 rank(Rfbs)=2 个,故而最后 r a n k ( R f b s s ) = min ⁡ ( P − 1 , 2 N , K ) \mathrm{rank}(\mathbf{R}_{\mathrm{fbss}}) = \min(P-1,2N,K) rank(Rfbss)=min(P1,2N,K)。因此为了让 R f b s s \mathbf{R}_{\mathrm{fbss}} Rfbss 的秩恢复为 K K K,需要保证 2 N ≥ K 2N\geq K 2NK P > K P>K P>K 成立。结合 M = N + P − 1 M = N+P-1 M=N+P1 我们将得到:
K ≤ 2 3 M K\leq\frac{2}{3}M K32M
即 FBSS-MUSIC 至多能估计 2 3 M \frac{2}{3}M 32M 个同组的相干信号源。

SS-MUSIC 改进算法

  实质上,SS-MUSIC 将协方差矩阵 R \mathbf{R} R 进行分块,并取属于对角位置的子矩阵进行累加,只要累加的次数足够,即可将内部信号协方差的秩恢复为 K K K。IFBSS-MUSIC3(Improved FBSS-MUSIC)利用非对角位置的子矩阵进行计算:
R i f b s s = 1 N 2 ∑ i = 1 N ∑ j = 1 N [ R f b ] i j [ R f b ] j i \mathbf{R}_{\mathrm{ifbss}} = \frac{1}{N^2}\sum_{i=1}^{N}\sum_{j=1}^{N} [\mathbf{R}_{\mathrm{fb}}]_{ij}[\mathbf{R}_{\mathrm{fb}}]_{ji} Rifbss=N21i=1Nj=1N[Rfb]ij[Rfb]ji
进一步可得到:
R i f b s s = 1 N 2 A P [ ∑ i = 1 N Φ i − 1 R f b s ( ∑ j = 1 N Φ 1 − j A P H A P Φ j − 1 ) R f b s Φ 1 − i ] A P H \begin{aligned} \mathbf{R}_{\mathrm{ifbss}} = \frac{1}{N^2}\mathbf{A}_{\mathrm{P}}\left[\sum_{i=1}^{N} \Phi^{i-1} \mathbf{R}_{\mathrm{fbs}}\left( \sum_{j=1}^{N} \Phi^{1-j}\mathbf{A}_{\mathrm{P}}^H\mathbf{A}_{\mathrm{P}}\Phi^{j-1}\right)\mathbf{R}_{\mathrm{fbs}}\Phi^{1-i}\right]\mathbf{A}_{\mathrm{P}}^H \end{aligned} Rifbss=N21AP[i=1NΦi1Rfbs(j=1NΦ1jAPHAPΦj1)RfbsΦ1i]APH

总结

  总的来说,SS-MUSIC 针对于 ULA 实现,而 ULA 属于中心对称阵列,因此结合前后向平均技术可以进一步提升自由度。从上面的讨论可得知,当 K > 1 K>1 K>1 个信号源同属一组相干源,即原协方差矩阵秩为 1 1 1,前后向平均技术可以实现一定的解相干,即将协方差矩阵的秩恢复为 2 2 2,但解相干能力有限。SS-MUSIC 牺牲了阵列孔径,但能实现完全解相干。

参考文献


  1. Shan T J, Wax M, Kailath T. On spatial smoothing for direction-of-arrival estimation of coherent signals[J]. IEEE Transactions on Acoustics, Speech, and Signal Processing, 1985, 33(4): 806-811. ↩︎

  2. Pillai S U, Kwon B H. Forward/backward spatial smoothing techniques for coherent signal identification[J]. IEEE Transactions on Acoustics, Speech, and Signal Processing, 1989, 37(1): 8-15. ↩︎

  3. Du W, Kirlin R L. Improved spatial smoothing techniques for DOA estimation of coherent signals[J]. IEEE Transactions on signal processing, 1991, 39(5): 1208-1210. ↩︎

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

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

相关文章

【2025】儿童疫苗接种预约小程序(源码+文档+解答)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

【C++指南】inline内联函数详解

&#x1f493; 博客主页&#xff1a;倔强的石头的CSDN主页 &#x1f4dd;Gitee主页&#xff1a;倔强的石头的gitee主页 ⏩ 文章专栏&#xff1a;《C指南》 期待您的关注 目录 引言 C为什么引入了inline来替代C语言中的宏 inline的基本用法 定义inline函数 inline的优势与…

DAY20信息打点-红蓝队自动化项目资产侦察武器库部署企查产权网络空间

2.自动化-网络空间-AsamF 1.去GitHub上下载项目之后使用CMD打开 2.输入命令AsamF_windows_amd64.exe -v生成配置文件 3.AsamF会在~/.config/asamf/目录下生成config.json文件 C:\Users\Acer\.config\asamf 5.根据文档输入命令去查询所需信息&#xff08;已经没有用了&#x…

C/C++通过CLion2024进行Linux远程开发保姆级教学

目前来说&#xff0c;对Linux远程开发支持相对比较好的也就是Clion和VSCode了&#xff0c;这两个其实对于C和C语言开发都很友好&#xff0c;大可不必过于纠结使用那个&#xff0c;至于VS和QtCreator&#xff0c;前者太过重量级了&#xff0c;后者更是不用说&#xff0c;主要用于…

解锁自动化新境界:KeymouseGo,让键盘和鼠标动起来!

文章目录 解锁自动化新境界&#xff1a;KeymouseGo&#xff0c;让键盘和鼠标动起来&#xff01;背景&#xff1a;为何选择KeymouseGo&#xff1f;KeymouseGo简介安装KeymouseGo简单函数使用应用场景常见问题与解决方案总结 解锁自动化新境界&#xff1a;KeymouseGo&#xff0c;…

ISSTA 2024现场精彩:“杰出论文奖”超半数属于中国学者

ISSTA会议是软件工程领域中最具影响力的国际会议之一&#xff0c;也是中国计算机学会&#xff08;CCF&#xff09;推荐的A类会议。 第33届ISSTA会议已于奥地利维也纳圆满结束&#xff0c;这场盛会已经吸引了众多来自学术界和工业界的软件测试专家、研究人员和工程师&#xff0c…

学习C++的第三天!

C对C的函数部分的扩充 封装 #include <iostream> #include <memory.h> #include <stdlib.h> #include <string.h> using namespace std; using datatype int; //封装一个顺序表 class SeqList { private:datatype* ptr; //指向堆区空间的起始…

基于嵌入式的智能物流柜( 触摸屏/0.96寸oled屏)

演示 智能物流柜&#xff08;基础版&#xff09; 智能物流柜&#xff08;升级版&#xff09; 前言 这是本人在大二在学校接的一个简单的实验室项目&#xff0c;之前发布了一个&#xff0c;由于那是在暑假&#xff0c;家里器材有限&#xff0c;代码敲完之后&#xff0c;用面包板…

PyTorch深度学习快速入门教程【土堆】基础知识篇

Juptyer 版本&#xff1a; Python 3.9.19Pytorch 2.4.1 (pytorch0) C:\Users\25694>conda install nb_conda_kernels(pytorch0) C:\Users\25694>jupyter notebook使用conda环境的pytorch&#xff1a; 成功解决python.exe无法找到程序入口 无法定位程序输入点 shifte…

机器学习-深度学习数据集之打架斗殴识别数据集

关于“打架识别数据集”&#xff0c;这是一个专门设计用于训练计算机视觉模型以识别打架、摔倒以及持械行为的数据集。此类数据集对于开发安全监控系统至关重要&#xff0c;可以帮助在公共场所如学校、酒吧或地铁站等地及时发现潜在的暴力事件&#xff0c;从而快速采取行动来防…

anaconda的windows新手安装及配置教程(适用于物联网工程、计算机专业)

第一步:点击免费下载 点击我直达anaconda官网">——>点击我直达anaconda官网 第二步:跳过注册 第三步:下载windows版本 第四步:安装步骤 1.Next (下一步) 2.I Agree (我同意) 3.默认即可,下一步 4.安装地址可以选到D盘,如果没有默认也行,只是一个…

上传富文本插入文件时报错:JSON parse error: Unexpected character解决办法

方式一&#xff08;加密解密&#xff09;&#xff1a; 1.前端 &#xff08;1&#xff09;安装 crypto-js npm install crypto-js&#xff08;2&#xff09;util下创建asc.js asc.js import CryptoJS from crypto-js// 需要和后端一致 const KEY CryptoJS.enc.Utf8.parse(…

《Linux基础》练习操作

一、文件目录类操作 1. 创建新用户user&#xff0c;其中用户名为学生姓名首字小写(如:张三&#xff0c;用户名为zsan) 将/etc/passwd拷贝到/home/user下面。修改/home/user/passwd,在文件的第15行下添加“hello 学号姓名”&#xff0c;光标停留在 hello 学号姓名…

[漏洞复现]泛微e-mobile cdnfile文件读取漏洞分析复现

如果觉得该文章有帮助的&#xff0c;麻烦师傅们可以搜索下微信公众号&#xff1a;良月安全。点个关注&#xff0c;感谢师傅们的支持。 免责声明 本号所发布的所有内容&#xff0c;包括但不限于信息、工具、项目以及文章&#xff0c;均旨在提供学习与研究之用。所有工具安全性…

金属3D打印经济效益高吗?

在我国制造业迈向产业升级的重要阶段&#xff0c;3D打印技术如同一股强劲的新风&#xff0c;特别是在航空航天、汽车、生物医疗等领域&#xff0c;已成为复杂构件制造的“明星”技术。那么&#xff0c;对于众多生产厂家而言&#xff0c;金属3D打印的经济账到底怎么算&#xff1…

永磁同步电机谐波抑制算法(8)——基于神经网络的傻瓜式(无需知道谐波频率)谐波抑制

1.简介 前面的内容已经介绍了很多谐波抑制的方法&#xff1a;多同步、PIR、陷波器等等。也介绍了比较多的谐波来源&#xff1a;死区&#xff08;5、7、11、13等次相电流谐波&#xff09;、绕组不对称&#xff08;基波不等幅值、3次相电流谐波&#xff09;等等。 上述的方法都…

基于springboot+vue超市管理系统

基于springbootvue超市管理系统 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本无人超市管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助使用者在…

进程间关系与进程守护

一、进程组 1、理解 每一个进程除了有一个进程 ID(PID)之外 还属于一个进程组&#xff0c; 进程组是一个或者多个进程的集合&#xff0c; 一个进程组可以包含多个进程。 每一个进程组也有一个唯一的进程组 ID(PGID)&#xff0c; 并且这个 PGID 类似于进程 ID&#xff0c; 同样…

不只是模仿,伯克利新研究赋予机器人跨实体自主学习的能力,零样本时代已来

导读&#xff1a; 在当今科技飞速发展的时代&#xff0c;机器人技术正不断地给我们带来惊喜和变革。2024 年 9 月&#xff0c;一篇来自加州大学伯克利分校、丰田研究所和Physical Intelligence 的研究论文RoVi-Aug: Robot and Viewpoint Augmentation for Cross-Embodiment Rob…

2024/9/20 使用QT实现扫雷游戏

有三种难度初级6x6 中级10x10 高级16x16 完成游戏 游戏失败后&#xff0c;无法再次完成游戏&#xff0c;只能重新开始一局 对Qpushbutton进行重写 mybutton.h #ifndef MYBUTTON_H #define MYBUTTON_H #include <QObject> #include <QWidget> #include <QPus…