一种管道泄漏检测的匹配场处理方法(Matlab代码实现)

 💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

摘要:

制定并应用了一种基于瞬态的泄漏检测方法,该方法采用匹配场处理(MFP)方案。它被发现是高效、稳健、准确的,并提供了一个独特的解决方案。其固有的效率源于MFP方法将泄漏位置和泄漏尺寸的搜索解耦。MFP方法在(1)噪声(SNR)低至SNR=-3 dB时,以及(2)流体管道系统波速的不确定性,能够估计泄漏的位置和大小,证明了其鲁棒性。MFP方法的另一个优点是它能够使用所有可用的频率,而不仅仅是谐振频率,并且不需要识别谐振频率。因此,即使在嘈杂的环境中,MFP 方法也能提供精确的定位估计。还表明,如果在管道沿线的两个位置测量压力信号,则通过MFP方法可以实现唯一识别。对于多次泄漏的情况,MFP 会识别每个泄漏,前提是泄漏之间的距离与最短探测半波长相同或更大。(C) 2018 年美国土木工程师协会。

关键词:

泄漏检测 瞬态波 水锤 逆向分析 匹配字段处理 噪声 不确定性 

📚2 运行结果

部分代码:

%% adding noise
% there are different ways to generate noise
SNR = 10;
sigma = 1/(10^(SNR/20));
h = h_hydro - h_NL;
h_MFP = real(h)+sigma*mean(mean(abs(real(h))))*randn(size(h)) + 1j*imag(h)+1j*sigma*mean(mean(abs(imag(h))))*randn(size(h));
h_MFP = h_MFP(:);
q_x1 = q_x1.*(1+sigma*randn(size(q_x1))) + 1j*imag(q_x1).*(1+sigma*randn(size(q_x1)));  

% More practical way to obtain q_x1 is to estimate from another pressure
% head measurement near the upstream, for this please refer to Eq. (17) in
% X. Wang and M. S. Ghidaoui, Identification of multiple leaks in pipeline: Linearized model, maximum likelihood, and super-resolution localization, Mechanical Systems and Signal Processing, vol. 107, pp. 529-548, 2018


%% leak localization using MFP

xL_test = 1:1:L-1; % discrete points for plotting cost function along the pipe
cost_MFP = zeros(size(xL_test));
S_MFP = zeros(size(xL_test));
G_all = zeros(length(xL_test),length(omega)*M);
for xx = 1:length(xL_test)
    G = zeros(length(omega),M);
    for mm = 1:M
        if xL_test(xx)>xM(mm)
            G(:,mm) = zeros(J,1);
        else
            G(:,mm) = -sqrt(9.8/2/(H1-(H1-H2)/L*xL_test(xx)))*Z.'.*sinh((xM(mm)-xL_test(xx))*mu.').*(Z.'.*sinh(xL_test(xx)*mu.').*q_x1);
        end
    end
    G = G(:);
    G_all(xx,:) = G;
%     if noise_method == 3   % whitening blue noise
%         G = 1./sigma_blue'.*G;
%     end
    cost_MFP(xx) = h_MFP'*G*G'*h_MFP/(G'*G);   % Eq. (19) in the paper
    S_MFP(xx) = G'*h_MFP/(G'*G);    % Eq. (20) in the paper
end
CdAl_MFP = S_MFP;
[~,x_max] = max(cost_MFP);
if no_L==1
    disp(['Conventional MFP: the estimated leak position is ',num2str(xL_test(x_max)),' m and the estimated leak size is CdAl=',num2str(abs(CdAl_MFP(x_max)))]);
    disp(['Conventional MFP: the localization error is ',num2str(abs(xL_test(x_max)-xL(1))),' m ']);
end


figure;
plot(xL_test,abs(cost_MFP)); hold on; % plot(xL_test,abs(S_MFP),'r--');
for ii = 1:length(xL)
    plot([xL(ii) xL(ii)],[min(abs(cost_MFP)) 1.1*max(abs(cost_MFP))],'r--');
end
plot(xM,ones(size(xM))*min(abs(cost_MFP)),'rx','MarkerSize',8,'Linewidth',1.5);
xlabel('x [m]'); ylabel('|B|^2','Interpreter','Tex')
ylim([min(abs(cost_MFP)) 1.1*max(abs(cost_MFP))]);

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

🌈4 Matlab代码实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值