語音信號處理三十——高效多相抽取器(Polyphase+Noble)

文章目錄

  • 前言
  • 一、Polyphase 多項分解
  • 二、Noble恒等式
    • 1. 定義
    • 2.Noble恒等式表達方式
      • 1)抽取系統的 Noble 恒等式
      • 2)插值系統的 Noble 恒等式
    • 2.Nodble恒等式推導
      • 1)符號定義
      • 2)先濾波后抽取
      • 3)先抽取后濾波
      • 4)比較左右兩式
    • 3.稀疏濾波器 H ( z M ) H(z^M) H(zM)
    • 4.計算量對比
  • 三、高效多相抽取器
  • 四、實現高效QMF濾波器組
    • 1. 設計目標
    • 2.設計思路
    • 3.實現代碼
    • 4.輸出結果
  • 總結


前言

在上一篇文章中,深入介紹了QMF濾波器組的原理,并且基于原理也同樣給出了實現方式,它可以用于頻帶分割和完美重構。而本篇文章將會介紹一種高效多相抽取器的設計,它可以大大減少下采樣、上采樣、濾波器組等中的計算量,同樣可以改進QMF濾波器組的設計。

本篇文章將先介紹Polyphase 多項分解和Noble恒等式的定義和原理,其中得到Polyphase 分解 + Noble 恒等式 = 高效多相抽取器設計。并以QMF濾波器為例,最終實現更為高效的頻帶分割。

|版本聲明:山河君,未經博主允許,禁止轉載


一、Polyphase 多項分解

1.定義

Polyphase 多項分解(Polyphase Decomposition)是數字信號處理中一種對濾波器進行重構或分解的方法,廣泛應用于下采樣、上采樣、濾波器組(filter bank)等。

簡單來說,它可以將一個FIR濾波器的沖激響應(或系統函數)按照某種方式拆分為若干子濾波器(稱為 polyphase 分量),以便于在多速率處理(如抽取/內插)中實現更高效的計算。

2.拆分公式

對于長度為 N N N的FIR濾波器,它的Z變換為:
H ( z ) = ∑ n = 0 N ? 1 h [ n ] z ? n H(z)=\sum_{n=0}^{N-1}h[n]z^{-n} H(z)=n=0N?1?h[n]z?n
將其分解為 M M M個polyphase分量為:
H ( z ) = ∑ k = 0 M ? 1 z ? k E k ( z M ) H(z)=\sum_{k=0}^{M-1}z^{-k}E_k(z^M) H(z)=k=0M?1?z?kEk?(zM)
其中

  • E k ( z ) = ∑ n = 0 ∞ h [ n M + k ] z ? n E_k(z) = \sum_{n=0}^{\infty}h[nM+k]z^{-n} Ek?(z)=n=0?h[nM+k]z?n
  • E k ( z M ) E_k(z^M) Ek?(zM):是第 k k k個多項式,取 M M M個系數中的第 k k k

例如我們將一個FIR濾波器分解為M個polyphose分量,那么系統的結構應該是:

   x[n]↓
+---多相分解---+
|              |
|    x_0[n] --> E_0(z^M) --+  
|    x_1[n] --> E_1(z^M) --+--> 疊加后輸出 y[n]
|    ...                   |
|    x_{M-1}[n] --> E_{M-1}(z^M) --+

3.推導過程

1)按模 M M M拆分求和項

將索引 n n n拆成兩部分:
n = M m + k , 0 ≤ k < M , m = 0 , 1 , … n=Mm+k, \quad 0≤k<M,m=0,1,… n=Mm+k,0k<M,m=0,1,
也就是說,我們把 h [ n ] h[n] h[n]分組,每組第 k k k個對應:

  • k = 0 : h [ 0 ] , h [ M ] , h [ 2 M ] , . . . . k=0:h[0], h[M], h[2M],.... k=0h[0],h[M],h[2M],....
  • k = 1 : h [ 1 ] , h [ M + 1 ] , h [ 2 M + 1 ] , . . . . k=1:h[1], h[M+1], h[2M+1],.... k=1h[1],h[M+1],h[2M+1],....
  • . . . . .... ....
  • k = M ? 1 : h [ M ? 1 ] , h [ 2 M ? 1 ] , h [ 3 M ? 1 ] , . . . . k=M-1:h[M-1], h[2M-1], h[3M-1],.... k=M?1h[M?1],h[2M?1],h[3M?1],....

那么原始濾波器就變為:
H ( z ) = ∑ n = 0 N ? 1 h [ n ] z ? n = ∑ k = 0 M ? 1 ∑ m = 0 ∞ h [ M m + k ] z ? ( M m + k ) H(z)=\sum_{n=0}^{N-1}h[n]z^{-n}=\sum_{k=0}^{M-1}\sum_{m=0}^{\infty}h[Mm+k]z^{-(Mm+k)} H(z)=n=0N?1?h[n]z?n=k=0M?1?m=0?h[Mm+k]z?(Mm+k)
注意:當 M m + k ≥ N Mm+k\geq N Mm+kN時, h [ M m + k ] = 0 h[Mm+k] = 0 h[Mm+k]=0,所以無窮求和也成立,實際上這個求和是形式上是無窮級數,但實際只有有限項非零,其實應該為 ∑ m = 0 N ? k ? 1 M h [ M m + k ] z ? ( M m + k ) \sum_{m=0}^{\frac{N-k-1}{M}}h[Mm+k]z^{-(Mm+k)} m=0MN?k?1??h[Mm+k]z?(Mm+k)

2)提取因子

現在將 z ? ( M m + k ) = z ? k z ? M m z^{-(Mm+k)}= z^{-k}z^{-Mm} z?(Mm+k)=z?kz?Mm拆分出來:
H ( z ) = ∑ k = 0 M ? 1 z ? k ∑ m = 0 ∞ h [ M m + k ] z ? M m H(z)=\sum_{k=0}^{M-1}z^{-k}\sum_{m=0}^{\infty}h[Mm+k]z^{-Mm} H(z)=k=0M?1?z?km=0?h[Mm+k]z?Mm
內層和是關于 m m m的,是子濾波器的表達式。我們定義:
E k ( z ) = ∑ m = 0 ∞ h [ M m + k ] z ? m ? E k ( z M ) = ∑ m = 0 ∞ h [ M m + k ] z ? m M E_k(z)=\sum_{m=0}^{\infty}h[Mm+k]z^{-m} \Rightarrow E_k(z^M)=\sum_{m=0}^{\infty}h[Mm+k]z^{-mM} Ek?(z)=m=0?h[Mm+k]z?m?Ek?(zM)=m=0?h[Mm+k]z?mM
最終得到:
H ( z ) = ∑ k = 0 M ? 1 z ? k E k ( z M ) H(z)=\sum_{k=0}^{M-1}z^{-k}E_k(z^M) H(z)=k=0M?1?z?kEk?(zM)

4.總結

截止到當前內容,可以看到:

  1. 多相分解本質上是濾波器的數學重構,不改變濾波器的頻率響應和功能
  2. 只用 polyphase 分解結構組合出的濾波器,結果與原始 FIR 濾波器一樣
  3. 此時并沒有節省計算,甚至由于多設計在實現時更復雜

那么本篇文章在一開始說多項分解是期望計算量可以大大減少,而這里并沒有減少計算量,這其實在一開始的定義中就已經說了,是配合抽取或插值時才使用 polyphase,這里就需要結合下面的內容——Noble恒等式。

二、Noble恒等式

1. 定義

假如現在有一個系統,在進行濾波后,需要進行抽取或者插值,那么使用Noble恒等式可以把濾波器移到抽取或插值前(或后),從而減少不必要的計算,以避免對冗余樣本進行濾波可顯著提高效率。

2.Noble恒等式表達方式

1)抽取系統的 Noble 恒等式

如果一個系統包含一個濾波器 H ( z ) H(z) H(z),后面跟著一個抽取器 ↓ M \downarrow M M,那么根據Noble恒等式存在以下關系:
H ( z ) ? ↓ M = ↓ M ? H ( z M ) H(z) \cdot \downarrow M = \downarrow M \cdot H(z^M) H(z)?M=↓M?H(zM)
其表明了:將濾波器 H ( z ) H(z) H(z)放在抽取器 ↓ M \downarrow M M之前,等價于先抽取再使用濾波器 H ( z M ) H(z^M) H(zM),其中 H ( z M ) H(z^M) H(zM)表示將濾波器頻率壓縮(頻譜展開)。

2)插值系統的 Noble 恒等式

如果一個系統包含一個插值器 ↑ L \uparrow L L,后面跟著一個濾波器 H ( z ) H(z) H(z),那么根據Noble恒等式存在以下關系:
↑ L ? H ( z ) = H ( z L ) ? ↑ L \uparrow L \cdot H(z) = H(z^L) \cdot \uparrow L L?H(z)=H(zL)?L
其表明了:在插值器后進行濾波,等價于先使用變換后的濾波器 H ( z L ) H(z^L) H(zL)再進行插值)。

2.Nodble恒等式推導

值得注意的是:我們知道抽取等同于下采樣,而下采樣時需要考慮混疊現象的發生,Noble 恒等式之所以成立,前提是濾波器 h [ n ] h[n] h[n]是設計合理的,也就是說它已經足夠抑制抽取過程可能產生的混疊(aliasing)

1)符號定義

以FIR濾波器+抽取為例,從上文可知,先濾波再抽取等于先抽取再濾波,即:
( x [ n ] ? h [ n ] ) ↓ M = ( x [ n ] ↓ M ) ? h [ n M ] (x[n]*h[n]) \downarrow M=(x[n] \downarrow M)*h[nM] (x[n]?h[n])M=(x[n]M)?h[nM]
其中定義:

  • x [ n ] x[n] x[n]: 原始輸入信號
  • h [ n ] h[n] h[n]: FIR 濾波器的沖激響應
  • y [ n ] = x [ n ] ? h [ n ] y[n] = x[n]*h[n] y[n]=x[n]?h[n]: 卷積結果
  • x e [ n ] = x [ n M ] x_e[n]=x[nM] xe?[n]=x[nM]: 抽取后的輸入信號
  • h e [ n ] = h [ n M ] h_e[n]=h[nM] he?[n]=h[nM]: 稀疏化后的濾波器
  • y e [ n ] = y [ n M ] y_e[n]=y[nM] ye?[n]=y[nM]: 抽取后結果

2)先濾波后抽取

  • 對于FIR濾波為:
    y [ n ] = x [ n ] ? h [ n ] = ∑ k = ? ∞ ∞ x [ k ] h [ n ? k ] y[n]=x[n]*h[n]=\sum_{k=-\infty}^{\infty}x[k]h[n-k] y[n]=x[n]?h[n]=k=??x[k]h[n?k]
  • 再進行抽取即:
    y e [ n ] = y [ n M ] = ∑ k = ? ∞ ∞ x [ k ] h [ n M ? k ] y_e[n]=y[nM]=\sum_{k=-\infty}^{\infty}x[k]h[nM-k] ye?[n]=y[nM]=k=??x[k]h[nM?k]
    注意:這里是對輸出也就是 y [ n ] y[n] y[n]進行抽樣 M M M,所以系統輸入 x [ n ] x[n] x[n]不變,而FIR濾波器沖激響應應該只對于 n M ? k nM-k nM?k處存在響應。

3)先抽取后濾波

  • 對于 x [ n ] x[n] x[n]抽取: x e [ n ] = x [ n M ] x_e[n]=x[nM] xe?[n]=x[nM]
  • 對于稀疏濾波器響應: h e [ n ] = h [ n M ] h_e[n]=h[nM] he?[n]=h[nM]
  • 帶入系統響應
    y 1 [ n ] = ∑ k = ? ∞ ∞ x e [ k ] h e [ n ? k ] = ∑ k = ? ∞ ∞ x [ k M ] h [ ( n ? k ) M ] y_1[n]=\sum_{k=-\infty}^{\infty}x_e[k]h_e[n-k]=\sum_{k=-\infty}^{\infty}x[kM]h[(n-k)M] y1?[n]=k=??xe?[k]he?[n?k]=k=??x[kM]h[(n?k)M]

4)比較左右兩式

m = k M m=kM m=kM,即上式:
y 1 [ n ] = ∑ k = ? ∞ ∞ x [ k M ] h [ ( n ? k ) M ] = ∑ m = ? ∞ ∞ x [ m ] h [ ( n M ? m ) ] y_1[n]=\sum_{k=-\infty}^{\infty}x[kM]h[(n-k)M]=\sum_{m=-\infty}^{\infty}x[m]h[(nM-m)] y1?[n]=k=??x[kM]h[(n?k)M]=m=??x[m]h[(nM?m)]
x [ k M ] x[kM] x[kM]只在 k = m k=m k=m M M M的整數倍處非零,所以 y 1 [ n ] = y e [ n ] y_1[n]=y_e[n] y1?[n]=ye?[n]左右兩邊等式相同。

3.稀疏濾波器 H ( z M ) H(z^M) H(zM)

從上式中,對于
y 1 [ n ] = ∑ m = ? ∞ ∞ x [ m ] h [ ( n M ? m ) ] y_1[n]=\sum_{m=-\infty}^{\infty}x[m]h[(nM-m)] y1?[n]=m=??x[m]h[(nM?m)]
只在 M M M的整數倍處非零,將原信號拉伸 M M M倍,中間插入 M ? 1 M-1 M?1個0。也就是說在系統的沖擊響應變成了如下形式:
[ h [ 0 ] , 0 , . .0 , h [ M ? 1 ] , 0 , . . , 0 , n ( M ? 1 ) ] [h[0],0,..0,h[M-1],0,..,0,n(M-1)] [h[0],0,..0,h[M?1],0,..,0,n(M?1)]
根據語音信號處理二十八——采樣率轉換文章中上采樣的過程,這實際上就是插值0的處理,那么對于原濾波器:
H ( z ) = ∑ n h [ n ] z ? n ? H ( z M ) = ∑ n h [ n ] z ? M n H(z)=\sum_nh[n]z^{-n} \Longrightarrow H(z^M)=\sum_nh[n]z^{-Mn} H(z)=n?h[n]z?n?H(zM)=n?h[n]z?Mn
對于系統的沖擊響應為:
h [ n ] ? h ′ [ n ] = { h [ n / M ] , n ≡ 0 ( m o d M ) 0 , o t h e r w i s e h[n] \Longrightarrow h'[n]=\begin{cases} h[n/M], \quad n \equiv 0(\mod M) \\ 0, \quad otherwise \\ \end {cases} h[n]?h[n]={h[n/M],n0(modM)0,otherwise?
也就是Noble的濾波器從 H ( z ) H(z) H(z)變為了 H ( z M ) H(z^M) H(zM)

4.計算量對比

步驟先濾后抽先抽后濾(用 Noble 恒等式)
處理采樣率原始速率降低后的速率(低 M 倍)
濾波器計算次數所有輸入都要處理只有每 M 個輸入處理一次
運算量
濾波器形態原始 H ( z ) H(z) H(z) H ( z M ) H(z^M) H(zM):頻率壓縮,稀疏系數

三、高效多相抽取器

此時了解了polyphase多項分解和noble恒等式,那么現在就可以構造一個高效多項抽取器。

1.Polyphase和Noble的關系

  • Polyphase中的 E k ( z M ) E_k(z^M) Ek?(zM)
    回到上文中Polyphase對于長度為 N N N的FIR濾波器的分解:
    H ( z ) = ∑ k = 0 M ? 1 z ? k E k ( z M ) H(z)= \sum_{k=0}^{M-1}z^{-k}E_k(z^M) H(z)=k=0M?1?z?kEk?(zM)
    E k ( z ) = ∑ n = 0 ∞ h [ n M + k ] z ? n E_k(z) = \sum_{n=0}^{\infty}h[nM+k]z^{-n} Ek?(z)=n=0?h[nM+k]z?n,得到 E k ( z M ) E_k(z^M) Ek?(zM)為:
    E k ( z M ) = ∑ n = 0 ∞ h [ n M + k ] z ? n M E_k(z^M)=\sum_{n=0}^{\infty}h[nM+k]z^{-nM} Ek?(zM)=n=0?h[nM+k]z?nM
    根據語音信號處理二十八——采樣率轉換文章中上采樣的過程,這個Polyphase分量的子濾波器同樣是一個稀疏濾波器
  • Noble中的 H ( z M ) H(z^M) H(zM)
    根據上文描述,它一樣是一個稀疏濾波器

總結:Polyphase多項分解中,各個子Polyphase分量濾波器已經變成了稀疏濾波器,即Noble恒等式中可以直接在Polyphase多項分解中直接使用。

2.設計一個抽取因子為 M M M的系統

1)常規系統結構

x(n) ──? H(z) ──? ↓M ──? y(n)

即:輸入信號先通過濾波器 H ( z ) H(z) H(z),再進行抽取,如果使用常規辦法:

  • 對每一個輸入樣本 x [ n ] x[n] x[n] 都應用完整的濾波器 H ( z ) H(z) H(z)
  • 然后只保留每隔 M M M個樣本一個,丟棄其他

那么會存在以下缺點:

  • 大部分濾波器輸出最終被丟棄了
  • 運算量大

因此我們需要設計一個高效多相抽取器來解決運算量問題

項目內容
原始結構 x ( n ) → H ( z ) → ↓ M x(n) \rightarrow H(z) \rightarrow \downarrow M x(n)H(z)→↓M
問題計算量大,大部分結果被丟棄
解決步驟1)Polyphase 分解
2)應用 Noble 恒等式
得到的結構只計算必要的濾波器輸出,每 M M M 個輸入產生一次輸出,高效節省計算量

2)使用polyphase分解

根據上文中,先將 H ( z ) H(z) H(z)分解為 M M M
H ( z ) = ∑ k = 0 M ? 1 z ? k E k ( z M ) H(z)=\sum_{k=0}^{M-1}z^{-k}E_k(z^M) H(z)=k=0M?1?z?kEk?(zM)

3)使用Noble恒等式

根據上文,將抽取位置放到濾波之前,濾波器變為 H ( z N ) H(z^N) H(zN)
H ( z ) ? ↓ M = ↓ M ? H ( z M ) H(z) \cdot \downarrow M = \downarrow M \cdot H(z^M) H(z)?M=↓M?H(zM)
即:

x(n) ──? H(z^M) ──? ↓M ──? y(n)

4)Polyphase + Noble

將Noble恒等式濾波器帶入,即最后系統結構變為
H ( z M ) = ∑ k = 0 M ? 1 z ? k M E k ( z M 2 ) H(z^M)=\sum_{k=0}^{M-1}z^{-kM}E_k(z^{M^2}) H(zM)=k=0M?1?z?kMEk?(zM2)
對于這個式子,整個系統結構如同下圖:
在這里插入圖片描述

5)整體的系統結構

  • 根據上文中Polyphase和Noble的關系,實際上每個子Polyphase分量已經是稀疏濾波器,所以對于 E k ( z M 2 ) E_k(z^{M^2}) Ek?(zM2)只是用于表達,實際上應用的還是 E k ( z M ) E_k(z^M) Ek?(zM)
  • 雖然頻域表達上有 z ? k M z^{-kM} z?kM,是第k個polyphase 分量相對于整體濾波器輸出的時間偏移,但是它只是推導過程中出現的一個中間形式。在時域結構中,這個延遲已經隱含在多通道輸入順序和采樣調度中,不需要手動加 delay block。

所以整體的系統結構和上文中公式表述的結構區別如同下圖:
在這里插入圖片描述

四、實現高效QMF濾波器組

1. 設計目標

使用Noble+polyphase多項分解實現一個QMF濾波器組,給出matlab代碼,要求:

  1. 16k采樣率的信號,使用一個2kHz和6kHz的正弦信號
  2. 對于原始序列進行頻帶分割和重組
  3. 鏡像濾波器使用FIR濾波器設計,同時使用漢明窗

輸出:
4. 畫出原始序列的頻譜
5. 畫出分割后的低頻和高頻頻譜
6. 畫出重組后的頻譜
7. 畫出原始的時域圖和重組后的時域圖

2.設計思路

在上一篇文章中,語音信號處理二十九——QMF濾波器設計原理與實現已經介紹了QMF濾波器組中鏡像濾波器的設計原理,這里不再贅述,整體的思路如下:

步驟描述
1設計線性相位原型濾波器 H 0 ( z ) H_0(z) H0?(z)
2構造 H 1 ( z ) = H 0 ( ? z ) H_1(z) = H_0(-z) H1?(z)=H0?(?z)
3構造合成濾波器 G 0 ( z ) = H 0 ( z ) , G 1 ( z ) = ? H 0 ( ? z ) G_0(z) = H_0(z), G_1(z) = -H_0(-z) G0?(z)=H0?(z),G1?(z)=?H0?(?z)
4對所有濾波器進行 polyphase 分解
5應用 Noble 恒等式將抽/插采樣前移/后移,提高效率
6構建完整的濾波器組結構,實現高效 PR 系統

3.實現代碼

clc; clear; close all;
fs = 16000;
t = 0:1/fs:0.05;
x = sin(2*pi*2000*t) + sin(2*pi*6000*t);   % 輸入信號%% 設計 QMF 濾波器組
M = 64;                                    % 濾波器長度
h0 = fir1(M-1, 0.5, hamming(M));           % 低通濾波器
h1 = h0 .* ((-1).^(0:M-1));                % 高通鏡像濾波器% 多項分解:偶數項、奇數項
h0_even = h0(1:2:end);                     % E0
h0_odd  = h0(2:2:end);                     % E1
h1_even = h1(1:2:end);                     % E0'
h1_odd  = h1(2:2:end);                     % E1'% 將信號分為偶數采樣、奇數采樣(Noble 恒等式:下采樣前移)
x_even = x(1:2:end);     % 下采樣偶數點
x_odd  = x(2:2:end);     % 下采樣奇數點% 對下采樣信號分別使用 polyphase 分支濾波器
% 偶數采樣信號濾波
y0_even = filter(h0_even, 1, x_even);
y0_odd  = filter(h0_odd,  1, x_odd);y1_even = filter(h1_even, 1, x_even);
y1_odd  = filter(h1_odd,  1, x_odd);% 由于x_even和x_odd長度可能不同,取最小長度裁剪
min_len = min([length(y0_even), length(y0_odd), length(y1_even), length(y1_odd)]);y0 = y0_even(1:min_len) + y0_odd(1:min_len);
y1 = y1_even(1:min_len) + y1_odd(1:min_len);%% 合成濾波器組(多項 + 上采樣 + Noble)
% 合成濾波器多項
g0_even = h0_even; g0_odd = h0_odd;
g1_even = h1_even; g1_odd = h1_odd;v0_even = filter(g0_even, 1, y0);
v0_odd  = filter(g0_odd,  1, y0);
v1_even = filter(g1_even, 1, y1);
v1_odd  = filter(g1_odd,  1, y1);min_len2 = min([length(v0_even), length(v0_odd), length(v1_even), length(v1_odd)]);xr = zeros(1, 2*min_len2);
xr(1:2:end) = v0_even(1:min_len2) + v1_even(1:min_len2);
xr(2:2:end) = v0_odd(1:min_len2)  + v1_odd(1:min_len2);%% 頻譜可視化
NFFT = 1024;
f = fs*(0:NFFT/2-1)/NFFT;
X = fft(x, NFFT);figure;
subplot(2,3,1); plot(t, x); title('原始信號(時域)');
subplot(2,3,2); plot(f, abs(X(1:NFFT/2))); title('原始信號頻譜');% 畫低頻子帶頻譜\高頻子帶頻譜
fs_sub = fs / 2;   % 子帶采樣率 8kHz
f_sub = fs_sub*(0:NFFT/2-1)/NFFT;Y0 = fft(y0, NFFT);
Y1 = fft(y1, NFFT);subplot(2,3,3);
plot(f_sub, abs(Y0(1:NFFT/2)));
title('低頻子帶頻譜');
xlabel('頻率 (Hz)');
subplot(2,3,4);
plot(f_sub, abs(Y1(1:NFFT/2)));
title('高頻子帶頻譜');
xlabel('頻率 (Hz)');t_rec = (0:length(xr)-1) / fs;
X_rec = fft(x, NFFT);
subplot(2,3,5); plot(t_rec, xr); title('重構信號(時域)');
subplot(2,3,6); plot(f, abs(X_rec(1:NFFT/2))); title('重構信號頻譜');

4.輸出結果

在這里插入圖片描述


總結

高效多相抽取器是一種能夠在進行抽取處理時,將濾波操作和下采樣合并,顯著降低計算量的濾波器結構。

對于polyphase多項分解和Noble恒等式存在具體的數學推導應該很容易理解,主要是對于高效多項抽取器中兩者的組合,那里對于相位延遲和稀疏濾波器的地方容易放人混淆。

反正收藏也不會看,不如點個贊吧

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/83340.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/83340.shtml
英文地址,請注明出處:http://en.pswp.cn/web/83340.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

廣告推薦系統中模型訓練中模型的結構信息、Dense數據、Sparse數據

下面結合廣告推薦系統常見的深度學習模型(比如 Wide & Deep、DeepFM、Two-Tower 等),介紹一下“模型的結構信息”、Dense 數據和 Sparse 數據在訓練過程中的角色及處理方式。 模型結構信息 輸入層(Input Layer) ? Sparse 輸入:各類離散高維特征(用戶 ID、廣告 ID、…

安全生產管理是什么?安全生產管理主要管什么?

安全生產管理是什么&#xff1f;安全生產管理主要管什么&#xff1f; 不管是制造業、建筑業&#xff0c;還是倉儲、物流、化工等等&#xff0c;一聊到“安全事故”&#xff0c;大家腦子里最先冒出來的兩個詞&#xff0c;肯定就是&#xff1a; 人的不安全行為物的不安全狀態 …

SecureRandom.getInstanceStrong() 與虛擬機的愛恨情仇

問題描述 使用Ruoyi-cloud 二開&#xff0c;將服務部署到虛擬機上后&#xff0c;準備登錄&#xff0c;發現驗證碼一致加載不出來&#xff0c;接口請求超時! 解決步驟 telnet 虛擬機ipport 發現可以通.curl 接口&#xff0c;發現一致不返回&#xff0c;超時了./code 接口超時&am…

DEM 地形分析與水文建模:基于 ArcGIS 的流域特征提取

技術點目錄 一、 GIS理論及ArcGIS認識二、ArcGIS數據管理與轉換三、ArcGIS地圖制作與發布四、ArcGIS數據制備與編輯五、ArcGIS矢量空間分析及應用六、ArcGIS柵格空間分析及應用七、ArcGIS空間插值及應用八、DEM數據與GIS三維分析九、ArcGIS高級建模及應用十、綜合講解了解更多 …

芯伯樂XBLW GT712選型及應用設計指南

前言 在電子工程領域&#xff0c;精準的電流測量對于眾多電路設計與系統監控至關重要。芯伯樂推出的XBLW GT712電流傳感器以其獨特的優勢&#xff0c;成為工程師在諸多應用中的首選工具。本文將深入剖析XBLW GT712的工作原理、性能特點以及應用要點&#xff0c;為工程師提供詳…

MySQL查看連接情況

說明&#xff1a;本文介紹如何查看MySQL會話連接情況&#xff0c;方便排查MySQL占用CPU過高或其他問題。 連接數據庫 首先&#xff0c;使用命令行連接到MySQL數據庫 mysql -u[用戶名] -p[密碼] -h[主機IP] -P[端口號]如果MySQL就在本機上&#xff0c;那么如下即可 mysql -u…

圖文教程——Deepseek最強平替工具免費申請教程——國內edu郵箱可用

親測有效&#xff01;只需 4 步即可免費體驗最新最強的 AI 助手&#xff01; 最強AI助手 This account isn’t eligible for Google AI Pro plan Google AI Pro plan isn’t available in some countries or for people under a certain age. 問題終極解決方案&#xff1a; ht…

java轉PHP開發需要幾步?

PHP基礎入門指南&#xff08;面向Java開發者&#xff09; 作為Java開發者&#xff0c;你已經掌握了面向對象編程、變量類型和控制結構等核心概念&#xff0c;這將大大加速你學習PHP的過程。下面我將從語法差異和PHP特性兩個方面&#xff0c;幫助你快速上手PHP開發。 語法差異…

一種使用 PowerToys 的鍵盤管理器工具重新映射按鍵實現在 Windows 上快捷輸入字符的方式

文章目錄 一、問題背景二、安裝 PowerToys三、配置快捷鍵 一、問題背景 在之前的一篇文章中介紹了使用 Java 程序實現快捷鍵輸入字符的方式&#xff08;https://blog.csdn.net/TeleostNaCl/article/details/148158298&#xff09;&#xff0c;其原理是利用 后臺常駐的 Java 應…

Python環境搭建競賽技術

Python環境搭建競賽技術文章大綱 競賽背景與意義 Python環境搭建競賽旨在考察參賽者對Python開發環境的熟悉程度&#xff0c;包括工具選擇、配置優化和問題解決能力。此類競賽常見于編程教學、企業內訓或技術社區活動&#xff0c;強調實踐性和效率。 競賽核心考察點 環境隔…

Python爬蟲實戰:研究MarkupSafe庫相關技術

1. 引言 在當今信息爆炸的時代,Web 數據爬取與分析已成為獲取有價值信息的重要手段。Python 憑借其豐富的庫生態(如 requests、BeautifulSoup),成為 Web 爬蟲開發的首選語言。然而,爬取的外部數據往往存在安全隱患,特別是當這些數據被用于動態生成 HTML 頁面時,可能導致…

Java-43 深入淺出 Nginx - 基本配置方式 nginx.conf Events塊 HTTP塊 反向代理 負載均衡

點一下關注吧&#xff01;&#xff01;&#xff01;非常感謝&#xff01;&#xff01;持續更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持續更新中&#xff01;&#xff08;長期更新&#xff09; 目前2025年06月05日更新到&#xff1a; AI煉丹日志-28 - Aud…

適配器模式深度解析:Java設計模式實戰指南與接口兼容性解決方案

適配器模式深度解析&#xff1a;Java設計模式實戰指南與接口兼容性解決方案 &#x1f31f; 嗨&#xff0c;我是IRpickstars&#xff01; &#x1f30c; 總有一行代碼&#xff0c;能點亮萬千星辰。 &#x1f50d; 在技術的宇宙中&#xff0c;我愿做永不停歇的探索者。 ? 用代碼…

類復制.省略 class.copy.elision

class類 復制/移動省略class.copy.elision 類復制省略 (copy elision) 當滿足特定條件時&#xff0c;即使所選對象的構造函數和/或析構函數有副作用&#xff0c;實現也被允許省略從相同類型&#xff08;忽略 cv 限定符&#xff09;的源對象創建類對象。 在這種情況下&#…

goreplay

1.github地址 https://github.com/buger/goreplay 2.簡單介紹 GoReplay 是一個開源的網絡監控工具&#xff0c;可以記錄用戶的實時流量并將其用于鏡像、負載測試、監控和詳細分析。 3.出現背景 隨著應用程序的增長&#xff0c;測試它所需的工作量也會呈指數級增長。GoRepl…

TensorZero:開源 LLM 應用優化與可觀測性平臺

TensorZero 是一個開源的 LLM&#xff08;大語言模型&#xff09;應用全鏈路優化平臺&#xff0c;聚焦于“數據—評估—優化—實驗”自動化閉環&#xff0c;極大提升 LLM 產品的可觀測性、可優化性和可擴展性。無論你是 GPT 應用開發者&#xff0c;還是需要管理和提升 LLM 服務…

postgreSql數據遷移到openGauss的方案

從postgresql 導出sql 腳本 工具-備份 選擇格式為Plain 得到腳本用vscode 打開并編輯 首先使用查找替換功能 語法適配修改?&#xff1a; 替換不支持的參數如lock_timeout為lockwait_timeout 移除row_security等openGauss不支持的配置 檢查并修改物化視圖的刷新語法 …

網絡爬蟲學習心得

一、引言? 在大數據時代&#xff0c;數據成為了驅動決策、洞察趨勢的核心資源。出于對數據分析的濃厚興趣&#xff0c;以及希望能更高效獲取網絡信息的目的&#xff0c;我踏上了網絡爬蟲的學習之旅。通過這段時間的學習&#xff0c;我不僅掌握了從網頁中提取數據的技術&#…

計算機視覺與深度學習 | 基于Matlab的低照度圖像增強算法原理,公式及實現

基于Matlab的低照度圖像增強是一個重要的圖像處理領域。這里我們重點介紹一種經典且效果較好的算法:多尺度Retinex算法(Multi-Scale Retinex with Color Restoration, MSRCR),包括其原理、公式及Matlab實現。 一、核心原理:Retinex理論 Retinex理論由Edwin Land提出,其…

【Linux跬步積累】—— 網絡編程套接字(二)

&#x1f30f;博客主頁&#xff1a;PH_modest的博客主頁 &#x1f6a9;當前專欄&#xff1a;Linux跬步積累 &#x1f48c;其他專欄&#xff1a; &#x1f534; 每日一題 &#x1f7e1; C跬步積累 &#x1f7e2; C語言跬步積累 &#x1f308;座右銘&#xff1a;廣積糧&#xff0…