💥 💥 💞 💞 欢迎来到本博客 ❤️ ❤️ 💥 💥
🏆 博主优势: 🌞 🌞 🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。
⛳ 座右铭:行百里者,半于九十。
📋 📋 📋 本文目录如下: 🎁 🎁 🎁
目录
💥1 概述
📚2 运行结果
🎉3 参考文献
🌈4 Matlab代码实现
💥1 概述
形态学滤波是从集合论推导出的典型非线性信号处理方法。在这种方法中,可以通过与指定的结构元件(SE)相互作用来挖掘信号中的脉冲特征。SE的参数(即形状、高度和长度)选择对形态过滤结果有重要影响。针对该问题,该文提出一种自适应时变形态滤波(ATVMF)方法。ATVMF可以根据待分析信号的固有特性自适应地确定SE的形状和尺度,有效提高瞬态特征提取能力和计算效率。此外,还提出了广义形态产物算子(GMPO)的定义,可以构造新的形态积算子进行特征提取。
📚2 运行结果
部分代码:
function [ y ] = ATVMF( x, interp_method, operator ) % Algorithm name: Adaptive Time-Varying Morphological Filtering (ATVMF) % % Algorithm description: This method can achieve adaptive morphological filtering, % in which a time-varying structure element (TVSE) is adaptively designed % based on the characteristics of a signal and is no longer fixed. % % Input: % x: signal to be analyzed (a vector) % interp_method: selected interpllation method, such as 'spline', 'pchip', % 'linear' and 'nearest', in which 'spline' is recommended. % 'spline' -- cubic spline interpolation % 'pchip' -- cubic Hermitian interpolation % 'linear' -- piecewise linear interpolation % 'nearest' -- nearest neighbor interpolation % operator: selected morphological operator, see sub-function 'MF_operator' % % Output: % y: morphological filtered signal x = x(:)-mean(x); % a vector N = length(x); [indmin, indmax] = extreme_points(x); % Determine the location of local minima and maxima % indmin -- the position of the local minimum point in the sequence x % indmax -- the position of the local maximum point in the sequence x tmin = indmin; tmax = indmax; xmin = x(tmin); % The magnitude of the local minimum point xmax = x(tmax); % The magnitude of the local maximum point % Sorting of local minimum and maximum points textra = zeros(1,length(tmin)+length(tmax)); xextra = zeros(1,length(xmin)+length(xmax)); if tmin(1) < tmax(1) % The first extreme point is the minimum point if tmin(end) > tmax(end) % The last extreme point is the minimum point textra(1) = tmin(1); xextra(1) = xmin(1); for i = 1:length(tmax) textra(2*i) = tmax(i); textra(2*i+1) = tmin(i+1); xextra(2*i) = xmax(i); xextra(2*i+1) = xmin(i+1); end else % The last extreme point is the maximum point for i = 1:length(tmax) textra(2*i-1) = tmin(i); textra(2*i) = tmax(i); xextra(2*i-1) = xmin(i); xextra(2*i) = xmax(i); end end else % The first extreme point is the maximum point if tmin(end) < tmax(end) % The last extreme point is the maximum point textra(1) = tmax(1); xextra(1) = xmax(1); for i = 1:length(tmin) textra(2*i) = tmin(i); textra(2*i+1) = tmax(i+1); xextra(2*i) = xmin(i); xextra(2*i+1) = xmax(i+1); end else % The last extreme point is the minimum point for i = 1:length(tmin) textra(2*i-1) = tmax(i); textra(2*i) = tmin(i); xextra(2*i-1) = xmax(i); xextra(2*i) = xmin(i); end end end % Selection of 'interp_method' env = interp1(textra,xextra,textra(1):textra(end),interp_method); delta = textra(1)-1; S = length(indmin)-1; % number of SE y = []; % output initialization for s = 1:S xnew = x(indmin(s)+1:indmin(s+1)); g = env(indmin(s)+1-delta:indmin(s+1)-delta); g = g-min(g); % the morphological filtering result ynew = MF_operator( xnew, g, operator ); y = [y; ynew]; end end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % sub-function function d = dilation(f,g) % Morphological dilation operation N = length(f); M = length(g); dtmp = f; for i = 1:N for j = 1:M if (i-j) >= 1 && (i-j) <= N tmp = f(i-j) + g(j); if tmp > dtmp(i) dtmp(i) = tmp; end end end end d = dtmp; end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % sub-function function e = erosion(f,g) % Morphological erosion operation N = length(f); M = length(g); dtmp = f; for i = 1:N for j = 1:M if (i+j) >= 1 && (i+j) <= N tmp = f(i+j) - g(j); if tmp < dtmp(i) dtmp(i) = tmp; end end end end e = dtmp; end %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % sub-function function y = MF_operator( x, g, operator ) % Morphological operators % a1 = dilation(x,g); % dilation a2 = erosion(a1,g); % closing a3 = erosion(a2,g); a4 = dilation(a3,g); % closing-opening % b1 = erosion(x,g); % erosion b2 = dilation(b1,g); % opening b3 = dilation(b2,g); b4 = erosion(b3,g); % opening-closing if strcmp(operator,'Gde') == 1 y = a1-b1; elseif strcmp(operator,'Gco') == 1 y = a2-b2; elseif strcmp(operator,'Gcooc') == 1 y = a4-b4; elseif strcmp(operator,'AHde') == 1 y = x-(a1+b1)/2; elseif strcmp(operator,'AHco') == 1 y = x-(a2+b2)/2; elseif strcmp(operator,'AHcooc') == 1 y = x-(a4+b4)/2; elseif strcmp(operator,'MGPO1') == 1 y = (a1-b1).*(a2-b2); elseif strcmp(operator,'MGPO2') == 1 y = (a1-b1).*(a4-b4); elseif strcmp(operator,'MGPO3') == 1
🎉3 参考文献
部分理论来源于网络,如有侵权请联系删除。
[1]陈斌, 宋大鹏, 张伟, 程彦, 王志, 一种用于轴承故障诊断的性能增强时变形态滤波方法, 测量学报 (2021) 109163.
[2]陈斌, 程彦, 张文, 梅国, 用于轴承断层特征提取的增强数学形态算子研究, ISA Trans. (2021)
[3]B. Chen, D. Song, W. Zhang, Y. Cheng, Z. Wang, A performance enhanced time-varying morphological filtering method for bearing fault diagnosis, Meas. J. Int. Meas. Confed. 176 (2021) 109163.
[4]B. Chen, Y. Cheng, W. Zhang, G. Mei, Investigation on enhanced mathematical morphological operators for bearing fault feature extraction, ISA Trans. (2021). https://doi.org/10.1016/j.isatra.2021.07.027.