【信號去噪】基于全局搜索策略的鯨魚算法優(yōu)化變分模態(tài)分解GSWOA-VMD實現(xiàn)水下信號去噪
?作者簡介:熱愛科研的Matlab仿真開發(fā)者,修心和技術(shù)同步精進,
代碼獲取、論文復(fù)現(xiàn)及科研仿真合作可私信。
??個人主頁:Matlab科研工作室
??個人信條:格物致知。
更多Matlab完整代碼及仿真定制內(nèi)容點擊??
?? ? ?? ?? ? ?? ? ? ? ?? ? ? ?
?? ? ? ? ? ? ? ?? ? ? ? ? ? ?? ?? ? ?? ?? ? ? ?
?? 內(nèi)容介紹
信號去噪一直是語音信號處理領(lǐng)域的重要研究方向之一。在實際應(yīng)用中,由于環(huán)境噪聲和其他干擾因素的存在,語音信號常常受到嚴(yán)重的干擾,降低了語音信號的質(zhì)量和可理解性。因此,開發(fā)高效的信號去噪算法對于提高語音信號的清晰度和準(zhǔn)確性至關(guān)重要。
近年來,隨著機器學(xué)習(xí)和優(yōu)化算法的快速發(fā)展,許多新的方法被提出來用于信號去噪。其中,變分模態(tài)分解(VMD)是一種有效的信號分解方法,可以將信號分解為多個模態(tài)分量。然后,通過選擇性地去除噪聲模態(tài)分量,可以實現(xiàn)對信號的去噪。
然而,傳統(tǒng)的VMD方法在實際應(yīng)用中存在一些問題。首先,它對于不同類型的信號和噪聲的適應(yīng)性較差。其次,由于VMD是一種迭代優(yōu)化算法,其收斂速度較慢,需要較長的計算時間。為了解決這些問題,本文提出了一種基于全局搜索策略的鯨魚算法優(yōu)化變分模態(tài)分解(GSWOA-VMD)的信號去噪方法。
鯨魚算法是一種基于自然界鯨魚行為的優(yōu)化算法,具有全局搜索能力和快速收斂速度。在GSWOA-VMD方法中,我們首先將語音信號分解為多個模態(tài)分量。然后,利用鯨魚算法對每個模態(tài)分量進行優(yōu)化,以選擇性地去除噪聲分量。最后,將去噪后的模態(tài)分量重構(gòu)為去噪信號。
與傳統(tǒng)的VMD方法相比,GSWOA-VMD方法具有以下優(yōu)點。首先,鯨魚算法能夠全局搜索最優(yōu)解,從而提高了去噪效果。其次,由于鯨魚算法的快速收斂性,GSWOA-VMD方法具有更短的計算時間。此外,GSWOA-VMD方法還具有較好的適應(yīng)性,可以應(yīng)用于各種類型的信號和噪聲。
為了評估GSWOA-VMD方法的性能,我們進行了一系列實驗。實驗結(jié)果表明,GSWOA-VMD方法在不同類型的信號和噪聲下都能取得較好的去噪效果。與傳統(tǒng)的VMD方法相比,GSWOA-VMD方法在去噪效果和計算時間方面都取得了顯著的改善。
綜上所述,本文提出了一種基于全局搜索策略的鯨魚算法優(yōu)化變分模態(tài)分解的信號去噪方法。該方法通過選擇性地去除噪聲模態(tài)分量,提高了語音信號的清晰度和準(zhǔn)確性。實驗結(jié)果表明,GSWOA-VMD方法在去噪效果和計算時間方面都具有明顯的優(yōu)勢。未來,我們將進一步研究和改進該方法,以提高其在實際應(yīng)用中的性能和穩(wěn)定性。
?? 部分代碼
function [u, u_hat, omega] = VMD(signal, alpha, tau, K, DC, init, tol)
%
%
% Input and Parameters:
% ---------------------
% signal ?- the time domain signal (1D) to be decomposed
% alpha ? - the balancing parameter of the data-fidelity constraint
% tau ? ? - time-step of the dual ascent ( pick 0 for noise-slack )
% K ? ? ? - the number of modes to be recovered
% DC ? ? ?- true if the first mode is put and kept at DC (0-freq)
% init ? ?- 0 = all omegas start at 0
% ? ? ? ? ? ? ? ? ? ?1 = all omegas start uniformly distributed
% ? ? ? ? ? ? ? ? ? ?2 = all omegas initialized randomly
% tol ? ? - tolerance of convergence criterion; typically around 1e-6
%
% Output:
% -------
% u ? ? ? - the collection of decomposed modes
% u_hat ? - spectra of the modes
% omega ? - estimated mode center-frequencies
%---------- Preparations
% Period and sampling frequency of input signal
save_T = length(signal);
fs = 1/save_T;
% extend the signal by mirroring
T = save_T;
f_mirror(1:T/2) = signal(T/2:-1:1);
f_mirror(T/2+1:3*T/2) = signal;
f_mirror(3*T/2+1:2*T) = signal(T:-1:T/2+1);
f = f_mirror;
% Time Domain 0 to T (of mirrored signal)
T = length(f);
t = (1:T)/T;
% Spectral Domain discretization
freqs = t-0.5-1/T;
% Maximum number of iterations (if not converged yet, then it won't anyway)
N = 500;
% For future generalizations: individual alpha for each mode
Alpha = alpha*ones(1,K);
% Construct and center f_hat
f_hat = fftshift((fft(f)));
f_hat_plus = f_hat;
f_hat_plus(1:T/2) = 0;
% matrix keeping track of every iterant // could be discarded for mem
u_hat_plus = zeros(N, length(freqs), K);
% Initialization of omega_k
omega_plus = zeros(N, K);
switch init
? ?case 1
? ? ? ?for i = 1:K
? ? ? ? ? ?omega_plus(1,i) = (0.5/K)*(i-1);
? ? ? ?end
? ?case 2
? ? ? ?omega_plus(1,:) = sort(exp(log(fs) + (log(0.5)-log(fs))*rand(1,K)));
? ?otherwise
? ? ? ?omega_plus(1,:) = 0;
end
% if DC mode imposed, set its omega to 0
if DC
? ?omega_plus(1,1) = 0;
end
% start with empty dual variables
lambda_hat = zeros(N, length(freqs));
% other inits
uDiff = tol+eps; % update step
n = 1; % loop counter
sum_uk = 0; % accumulator
% ----------- Main loop for iterative updates
while ( uDiff > tol && ?n < N ) % not converged and below iterations limit
? ?
? ?% update first mode accumulator
? ?k = 1;
? ?sum_uk = u_hat_plus(n,:,K) + sum_uk - u_hat_plus(n,:,1);
? ?
? ?% update spectrum of first mode through Wiener filter of residuals
? ?u_hat_plus(n+1,:,k) = (f_hat_plus - sum_uk - lambda_hat(n,:)/2)./(1+Alpha(1,k)*(freqs - omega_plus(n,k)).^2);
? ?
? ?% update first omega if not held at 0
? ?if ~DC
? ? ? ?omega_plus(n+1,k) = (freqs(T/2+1:T)*(abs(u_hat_plus(n+1, T/2+1:T, k)).^2)')/sum(abs(u_hat_plus(n+1,T/2+1:T,k)).^2);
? ?end
? ?
? ?% update of any other mode
? ?for k=2:K
? ? ? ?
? ? ? ?% accumulator
? ? ? ?sum_uk = u_hat_plus(n+1,:,k-1) + sum_uk - u_hat_plus(n,:,k);
? ? ? ?
? ? ? ?% mode spectrum
? ? ? ?u_hat_plus(n+1,:,k) = (f_hat_plus - sum_uk - lambda_hat(n,:)/2)./(1+Alpha(1,k)*(freqs - omega_plus(n,k)).^2);
? ? ? ?
? ? ? ?% center frequencies
? ? ? ?omega_plus(n+1,k) = (freqs(T/2+1:T)*(abs(u_hat_plus(n+1, T/2+1:T, k)).^2)')/sum(abs(u_hat_plus(n+1,T/2+1:T,k)).^2);
? ? ? ?
? ?end
? ?
? ?% Dual ascent
? ?lambda_hat(n+1,:) = lambda_hat(n,:) + tau*(sum(u_hat_plus(n+1,:,:),3) - f_hat_plus);
? ?
? ?% loop counter
? ?n = n+1;
? ?
? ?% converged yet?
? ?uDiff = eps;
? ?for i=1:K
? ? ? ?uDiff = uDiff + 1/T*(u_hat_plus(n,:,i)-u_hat_plus(n-1,:,i))*conj((u_hat_plus(n,:,i)-u_hat_plus(n-1,:,i)))';
? ?end
? ?uDiff = abs(uDiff);
? ?
end
%------ Postprocessing and cleanup
% discard empty space if converged early
N = min(N,n);
omega = omega_plus(1:N,:);
% Signal reconstruction
u_hat = zeros(T, K);
u_hat((T/2+1):T,:) = squeeze(u_hat_plus(N,(T/2+1):T,:));
u_hat((T/2+1):-1:2,:) = squeeze(conj(u_hat_plus(N,(T/2+1):T,:)));
u_hat(1,:) = conj(u_hat(end,:));
u = zeros(K,length(t));
for k = 1:K
? ?u(k,:)=real(ifft(ifftshift(u_hat(:,k))));
end
% remove mirror part
u = u(:,T/4+1:3*T/4);
% recompute spectrum
clear u_hat;
for k = 1:K
? ?u_hat(:,k)=fftshift(fft(u(k,:)))';
end
end
?? 運行結(jié)果




?? 參考文獻(xiàn)
[1] 李曼.在Matlab中實現(xiàn)基于LMS算法語音信號去噪[J].電腦知識與技術(shù), 2014(11X):3.DOI:CNKI:SUN:DNZS.0.2014-32-035.
[2] 李志鵬,張智瀚,王睿,等.基于變分模態(tài)分解和改進鯨魚算法優(yōu)化的模糊神經(jīng)網(wǎng)絡(luò)風(fēng)速預(yù)測模型[J].? 2022(3).
[3] 楊海馬,陳嘉慈,徐笑寒,等.基于鯨魚優(yōu)化算法的VMD-NLM脈搏信號濾波算法研究[J].上海理工大學(xué)學(xué)報, 2022, 44(6):553-561.
?? 部分理論引用網(wǎng)絡(luò)文獻(xiàn),若有侵權(quán)聯(lián)系博主刪除
?? ?關(guān)注我領(lǐng)取海量matlab電子書和數(shù)學(xué)建模資料
?? ?私信完整代碼、論文復(fù)現(xiàn)、期刊合作、論文輔導(dǎo)及科研仿真定制
1 各類智能優(yōu)化算法改進及應(yīng)用
生產(chǎn)調(diào)度、經(jīng)濟調(diào)度、裝配線調(diào)度、充電優(yōu)化、車間調(diào)度、發(fā)車優(yōu)化、水庫調(diào)度、三維裝箱、物流選址、貨位優(yōu)化、公交排班優(yōu)化、充電樁布局優(yōu)化、車間布局優(yōu)化、集裝箱船配載優(yōu)化、水泵組合優(yōu)化、解醫(yī)療資源分配優(yōu)化、設(shè)施布局優(yōu)化、可視域基站和無人機選址優(yōu)化
2 機器學(xué)習(xí)和深度學(xué)習(xí)方面
卷積神經(jīng)網(wǎng)絡(luò)(CNN)、LSTM、支持向量機(SVM)、最小二乘支持向量機(LSSVM)、極限學(xué)習(xí)機(ELM)、核極限學(xué)習(xí)機(KELM)、BP、RBF、寬度學(xué)習(xí)、DBN、RF、RBF、DELM、XGBOOST、TCN實現(xiàn)風(fēng)電預(yù)測、光伏預(yù)測、電池壽命預(yù)測、輻射源識別、交通流預(yù)測、負(fù)荷預(yù)測、股價預(yù)測、PM2.5濃度預(yù)測、電池健康狀態(tài)預(yù)測、水體光學(xué)參數(shù)反演、NLOS信號識別、地鐵停車精準(zhǔn)預(yù)測、變壓器故障診斷
2.圖像處理方面
圖像識別、圖像分割、圖像檢測、圖像隱藏、圖像配準(zhǔn)、圖像拼接、圖像融合、圖像增強、圖像壓縮感知
3 路徑規(guī)劃方面
旅行商問題(TSP)、車輛路徑問題(VRP、MVRP、CVRP、VRPTW等)、無人機三維路徑規(guī)劃、無人機協(xié)同、無人機編隊、機器人路徑規(guī)劃、柵格地圖路徑規(guī)劃、多式聯(lián)運運輸問題、車輛協(xié)同無人機路徑規(guī)劃、天線線性陣列分布優(yōu)化、車間布局優(yōu)化
4 無人機應(yīng)用方面
無人機路徑規(guī)劃、無人機控制、無人機編隊、無人機協(xié)同、無人機任務(wù)分配、無人機安全通信軌跡在線優(yōu)化
5 無線傳感器定位及布局方面
傳感器部署優(yōu)化、通信協(xié)議優(yōu)化、路由優(yōu)化、目標(biāo)定位優(yōu)化、Dv-Hop定位優(yōu)化、Leach協(xié)議優(yōu)化、WSN覆蓋優(yōu)化、組播優(yōu)化、RSSI定位優(yōu)化
6 信號處理方面
信號識別、信號加密、信號去噪、信號增強、雷達(dá)信號處理、信號水印嵌入提取、肌電信號、腦電信號、信號配時優(yōu)化
7 電力系統(tǒng)方面
微電網(wǎng)優(yōu)化、無功優(yōu)化、配電網(wǎng)重構(gòu)、儲能配置
8 元胞自動機方面
交通流 人群疏散 病毒擴散 晶體生長
9 雷達(dá)方面
卡爾曼濾波跟蹤、航跡關(guān)聯(lián)、航跡融合
【信號去噪】基于全局搜索策略的鯨魚算法優(yōu)化變分模態(tài)分解GSWOA-VMD實現(xiàn)水下信號去噪的評論 (共 條)
