日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【数字信号处理】基于matlab LMD算法和ELMD算法管道泄漏信号处理【含Matlab源码 1985期】

發(fā)布時間:2024/3/24 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【数字信号处理】基于matlab LMD算法和ELMD算法管道泄漏信号处理【含Matlab源码 1985期】 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?一、局部分解理論研究

局部均值分解算法(Local Mean Decomposition, LMD) 作為處理非平穩(wěn)隨機(jī)信號的一種手段,得到了廣泛應(yīng)用,并成熟地應(yīng)用于機(jī)械故障診斷、信號特征提取與分析等方面。LMD算法最大的特點就在于其對信號的自適應(yīng)分解能力, 這種自適應(yīng)能力主要體現(xiàn)在該方法能夠通過數(shù)據(jù)自身特點,通過特定手段,將原始信號分為不同模態(tài)函數(shù), 針對不同模態(tài)函數(shù)進(jìn)一步處理。與此同時, 局部均值分解算法(LMD) 相較于模態(tài)分解的創(chuàng)始算法經(jīng)驗?zāi)B(tài)分解算法(Empirical Mode Decomposition, EMD) 而言,其具備端點效應(yīng)小、迭代次數(shù)少等優(yōu)勢。本章將詳述LMD算法基本原理及分解流程,并針對LMD存在的基本問題, 進(jìn)行改進(jìn)研究。

1 局部均值分解算法理論研究
2005年, JonathanS.Smith提出的一種新的非線性和非平穩(wěn)信號分析方法一局部均值分解算法(LMD) , 并應(yīng)用于腦電信號的分析中, 取得不錯的效果。此外, 局部均值分解在機(jī)械故障診斷中也得到良好的應(yīng)用。局部均值分解可以依據(jù)信號本身的特征進(jìn)行自適應(yīng)分解的,產(chǎn)生具有真實物理意義的PF分量,并由此得到能夠清晰準(zhǔn)確反映出信號能量在空間各尺度上分布規(guī)律的時頻分布,有利于更加細(xì)致的對信號特征進(jìn)行分析。
1.1局部均值算法(LMD) 分解流程
利用LMD分解, 可以將原始信號分解并產(chǎn)生若干有效PF分量, 將所有PF分量相加即可重構(gòu)出原始信號。其中每個PF分量都是一個純調(diào)頻信號和包絡(luò)信號的乘積,且每個PF分量的瞬時頻率具有實際物理意義。LMD分解的具體流程如下:(1)原始信號x(t),找出x(t)上的所有局部極值點n,由相鄰的兩個極值點n,n.計算出的一個均值m,即

隨后將得到的所有平均值m,用折線連接,連接過程采用滑動平均方法進(jìn)行平滑處理,進(jìn)而得到局部均值函數(shù)m,(t)。同時,利用相鄰極值點計算包絡(luò)估計值a,,即





通過公式(2-12)可以發(fā)現(xiàn),信號重構(gòu)過程中,不會出現(xiàn)信息的丟失,保證了信號的完整性。具體流程圖如下圖1.1所示

(1)總體局部均值分解算法研究
模態(tài)混疊現(xiàn)象的發(fā)生一方面來自于算法本身,另一方面則會受到原始信號頻率特征的影響。當(dāng)待處理信號確定之后,信號特征頻率變不會發(fā)生改變,因此,為抑制模態(tài)混疊現(xiàn)象的出現(xiàn),從算法本身出發(fā),引入噪聲輔助信號處理方法,即在信號中加入白噪聲來平滑脈沖干擾。因為在LMD分解過程中, 需要對極值點進(jìn)行處理, 得到局部均值函數(shù)及包絡(luò)估計函數(shù),極值點的分布就會影響到包絡(luò)的擬合情況。如果信號的極值點分布不均勻, 則極易產(chǎn)生模態(tài)混疊。因此, 在LMD中, 借助高斯白噪聲輔助法, 對模態(tài)混疊進(jìn)行抑制, 得到總體局部均值分解(Ensemble Local Mean Decomposition ELMD) 算法。ELMD分解, 是指在LMD分解前, 將不同有限幅值的白噪聲信號加入待分解信號,利用白噪聲均值為零,頻譜能量分布均勻的特性,使得白噪聲可以均勻的分布在整個時頻空間中,并且不同時間尺度的信號會自動分布到與背景噪聲相關(guān)的適當(dāng)尺度上去。對于單次試驗,由于噪聲的添加,使得每次結(jié)果都會受到噪聲的影響產(chǎn)生偏差,這是由于在分解過程中,信號包括原始信號及附加的白噪聲。但隨著試驗的次數(shù)增加,由于零均值的特性,噪聲將會相互抵消,進(jìn)而得到消除,唯一持久穩(wěn)固的部分便是信號本身, 因此可以認(rèn)定集成均值的結(jié)果就是最終分解結(jié)果, 即EL MD算法。
總體局部均值EL MD分解算法流程圖如圖2.13所示, 即對原始信號分別加入n組不同高斯白噪聲, 分別進(jìn)行LMD分解, 隨后將得到的n組PF分量進(jìn)行平均處理,得到最終的LMD分解結(jié)果。

?二、部分源代碼

clear;clc;close all;
x1=xlsread(‘5.xlsx’);
VarName2=x1(:,2);
x=VarName2’;
Nstd =0.1;
NR =100;
%[modes its]=eemd(ecg,0.1,100,1000);
modes = mlmd(x,Nstd,NR);
[a, b]=size(modes);
N=length(x);
fs=1000;
Ts=1/fs;
t=0:Ts:NTs;
t=t(1:N);
% 繪制仿真信號和其頻譜圖
figure(1)
subplot(211)
plot(t,x)
subplot(212)
y2=x;
L=length(y2);
NFFT = 2^nextpow2(L);
Y = fft(y2,NFFT)/L;
f = fs/2linspace(0,1,NFFT/2);
plot(f,2abs(Y(1:NFFT/2)))
PF=modes;
line=size(PF,1);
NN = length(PF(1,:));
n = linspace(0,1,NN);
for k1=0:4:line-1
figure(‘Color’,[1 1 1]);
for k2=1:min(4,line-k1)
subplot(4,2,2k2-1);
plot(t,PF(k1+k2,:));
title(sprintf(‘第%d個PF’, k1+k2))
xlabel(‘Time/s’)
ylabel(sprintf(‘PF%d’,k1+k2));
subplot(4,2,2k2)
[yf, f] = FFTAnalysis(PF(k1+k2,:), Ts);
plot(f, yf)
title(sprintf(‘第%d個PF的頻譜’, k1+k2))
xlabel(‘f/Hz’)
ylabel(‘|PF(f)|’);
end
end;
% 頻譜分析
function [Y, f] = FFTAnalysis(y, Ts)
Fs = 1/Ts;
L = length(y);
NFFT = 2^nextpow2(L);
% y = y - mean(y);
Y = fft(y, NFFT)/L;
Y = 2abs(Y(1:NFFT/2+1));
f = Fs/2linspace(0, 1, NFFT/2+1);
end
function [pf,a,si,u] = lmd(x)
x=x’;
c = x’;
N = length(x);
A = ones(1,N);
PF = [];
AA=[];
SI=[];
U=[];
aii = 2A;

while(1)

si = c;
a = 1;

while(1)
h = si;

maxVec = [];minVec = [];

% look for max and min point
for i = 2: N - 1
if h (i - 1) < h (i) && h (i) > h (i + 1)
maxVec = [maxVec i];
end
if h (i - 1) > h (i) && h (i) < h (i + 1)
minVec = [minVec i];
end
end

% check if it is residual
if (length (maxVec) + length (minVec)) < 2
break;
end

% handle end point
lenmax=length(maxVec);
lenmin=length(minVec);
%left end point
if h(1)>0
if(maxVec(1)<minVec(1))
yleft_max=h(maxVec(1));
yleft_min=-h(1);
else
yleft_max=h(1);
yleft_min=h(minVec(1));
end
else
if (maxVec(1)<minVec(1))
yleft_max=h(maxVec(1));
yleft_min=h(1);
else
yleft_max=-h(1);
yleft_min=h(minVec(1));
end
end
%right end point
if h(N)>0
if(maxVec(lenmax)<minVec(lenmin))
yright_max=h(N);
yright_min=h(minVec(lenmin));
else
yright_max=h(maxVec(lenmax));
yright_min=-h(N);
end
else
if(maxVec(lenmax)<minVec(lenmin))
yright_max=-h(N);
yright_min=h(minVec(lenmin));
else
yright_max=h(maxVec(lenmax));
yright_min=h(N);
end
end
%get envelop of maxVec and minVec using
%spline interpolate
maxEnv=spline([1 maxVec N],[yleft_max h(maxVec) yright_max],1:N);
minEnv=spline([1 minVec N],[yleft_min h(minVec) yright_min],1:N);

mm = (maxEnv + minEnv)/2; aa = abs(maxEnv - minEnv)/2;mmm = mm; aaa = aa; preh = h; h = h-mmm; si = h./aaa; a = a.*aaa; aii = aaa; B = length(aii); C = ones(1,B); bb = norm(aii-C); if(bb < 1000)break; end

?三、運行結(jié)果








?四、matlab版本及參考文獻(xiàn)

1 matlab版本
2014a或2019b

2 參考文獻(xiàn)
[1]李博健.改進(jìn)LMD算法在管道泄漏中的應(yīng)用研究[D].東北石油大學(xué)

3 備注
簡介此部分摘自互聯(lián)網(wǎng),僅供參考,若侵權(quán),聯(lián)系刪除

總結(jié)

以上是生活随笔為你收集整理的【数字信号处理】基于matlab LMD算法和ELMD算法管道泄漏信号处理【含Matlab源码 1985期】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。