✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
⛄ 内容介绍
根据飞机发动机状态参数建立决策树进行分类是发动机故障检测的重要方法,本文针对单棵决策树模型分类方法精度不高,容易出现过拟合等问题,提出使用组合单决策树来提高计算精度的随机森林算法,并将该方法进行仿真实验.结果表明,随机森林算法能够解决单个决策树过拟合问题,在解决飞机发动机故障诊断领域中具有广阔的发展及应用前景.
⛄ 部分代码
function [I, T_ini,T_ref] = LIME(L,para)
T_ini = max(L,[],3)+0.02;
[wx, wy] = computeTextureWeights(T_ini, para.sigma);
T_ref = solveLinearEquation(T_ini, wx, wy, para.lambda);
hgamma = vision.GammaCorrector(1/para.gamma,'Correction','Gamma');
T_ref = step(hgamma, T_ref);
I(:,:,1) = L(:,:,1)./T_ref;
I(:,:,2) = L(:,:,2)./T_ref;
I(:,:,3) = L(:,:,3)./T_ref;
end
function [retx, rety] = computeTextureWeights(fin, sigma)
fx = diff(fin,1,2);
fx = padarray(fx, [0 1 0], 'post');
fy = diff(fin,1,1);
fy = padarray(fy, [1 0 0], 'post');
vareps_s = 0.02;
vareps = 0.001;
wto = max(sum(sqrt(fx.^2+fy.^2),3)/size(fin,3),vareps_s).^(-1);
fbin = lpfilter(fin, sigma);
gfx = diff(fbin,1,2);
gfx = padarray(gfx, [0 1], 'post');
gfy = diff(fbin,1,1);
gfy = padarray(gfy, [1 0], 'post');
wtbx = max(sum(abs(gfx),3)/size(fin,3),vareps).^(-1);
wtby = max(sum(abs(gfy),3)/size(fin,3),vareps).^(-1);
retx = wtbx.*wto;
rety = wtby.*wto;
retx(:,end) = 0;
rety(end,:) = 0;
end
function ret = conv2_sep(im, sigma)
ksize = bitor(round(5*sigma),1);
g = fspecial('gaussian', [1,ksize], sigma);
ret = conv2(im,g,'same');
ret = conv2(ret,g','same');
end
function FBImg = lpfilter(FImg, sigma)
FBImg = FImg;
for ic = 1:size(FBImg,3)
FBImg(:,:,ic) = conv2_sep(FImg(:,:,ic), sigma);
end
end
function OUT = solveLinearEquation(IN, wx, wy, lambda)
%
% The code for constructing inhomogenious Laplacian is adapted from
% the implementaion of the wlsFilter.
%
% For color images, we enforce wx and wy be same for three channels
% and thus the pre-conditionar only need to be computed once.
%
[r,c,ch] = size(IN);
k = r*c;
dx = -lambda*wx(:);
dy = -lambda*wy(:);
B(:,1) = dx;
B(:,2) = dy;
d = [-r,-1];
A = spdiags(B,d,k,k);
e = dx;
w = padarray(dx, r, 'pre'); w = w(1:end-r);
s = dy;
n = padarray(dy, 1, 'pre'); n = n(1:end-1);
D = 1-(e+w+s+n);
A = A + A' + spdiags(D, 0, k, k);
if exist('ichol','builtin')
L = ichol(A,struct('michol','on'));
OUT = IN;
for ii=1:ch
tin = IN(:,:,ii);
[tout, flag] = pcg(A, tin(:),0.1,100, L, L');
OUT(:,:,ii) = reshape(tout, r, c);
end
else
OUT = IN;
for ii=1:ch
tin = IN(:,:,ii);
tout = A\tin(:);
OUT(:,:,ii) = reshape(tout, r, c);
end
end
end
⛄ 运行结果
⛄ 参考文献
[1] 马辉.基于随机森林的光伏电站结构故障诊断与分类研究[D].西安理工大学[2023-06-13].
[2] 陈苏雨,方宇,胡定玉,等.基于随机森林方法的地铁车门故障诊断[J].测控技术, 2018, 37(2):5.DOI:CNKI:SUN:IKJS.0.2018-02-006.
[3] 陈冠宇,杨鹏,陈宁.基于随机森林算法的船舶电站故障诊断[J].船舶工程, 2023, 45(1):4.
[4] 王 玲,周东方,生拥宏,等.基于随机森林算法的模拟电路故障诊断[J].Journal of Terahertz Science and Electronic Information Technology, 16(5)[2023-06-13].