📄 mfdrag.m
字号:
param(1) = curr_info(1,1);
set(lineH, 'ydata', evalmf(x, param, mf_type));
set(leftlowH, 'xdata', real(square) + curr_info(1));
set(paramH, 'string', mat2str(param, 3));
elseif get(centerH, 'userdata') & ...
param(1) <= curr_info(1,1) & curr_info(1,1) <= param(3),
param(2) = curr_info(1,1);
set(lineH, 'ydata', evalmf(x, param, mf_type));
set(centerH, 'xdata', real(square) + curr_info(1));
set(paramH, 'string', mat2str(param, 3));
elseif get(rightlowH, 'userdata') & param(2) <= curr_info(1,1),
param(3) = curr_info(1,1);
set(lineH, 'ydata', evalmf(x, param, mf_type));
set(rightlowH, 'xdata', real(square) + curr_info(1,1));
set(paramH, 'string', mat2str(param, 3));
elseif gco == lineH,
paramHndl = findobj(gcf, 'Tag', 'mfparams');
tmp = get(paramHndl, 'Userdata');
param = curr_info(1,1) - tmp(1) + tmp(2:length(tmp));
y=evalmf(x, param, mf_type);
set(lineH, 'ydata', y);
set(leftlowH, 'xdata', real(square) + param(1));
set(centerH, 'xdata', real(square) + param(2));
set(rightlowH, 'xdata', real(square) + param(3));
set(paramH, 'string', mat2str(param, 3));
end
elseif strcmp(mf_type, 'trapmf') | strcmp(mf_type, 'pimf'),
if get(leftlowH, 'userdata'),
if curr_info(1,1) <= param(2),
param(1) = curr_info(1,1);
set(lineH, 'ydata', evalmf(x, param, mf_type));
set(leftlowH, 'xdata', real(square)+curr_info(1,1));
set(paramH, 'string', mat2str(param, 3));
end
elseif get(rightlowH, 'userdata'),
if curr_info(1,1) >= param(3),
param(4) = curr_info(1,1);
set(lineH, 'ydata', evalmf(x, param, mf_type));
set(rightlowH, 'xdata', real(square)+curr_info(1,1));
set(paramH, 'string', mat2str(param, 3));
end
elseif get(lefthighH, 'userdata'),
if curr_info(1,1) >= param(1),
param(2) = curr_info(1,1);
set(lineH, 'ydata', evalmf(x, param, mf_type));
set(lefthighH, 'xdata', real(square)+curr_info(1,1));
set(paramH, 'string', mat2str(param, 3));
end
elseif get(righthighH, 'userdata'),
if curr_info(1,1) <= param(4),
param(3) = curr_info(1,1);
set(lineH, 'ydata', evalmf(x, param, mf_type));
set(righthighH, 'xdata', real(square)+curr_info(1,1));
set(paramH, 'string', mat2str(param, 3));
end
elseif gco == lineH,
paramHndl = findobj(gcf, 'Tag', 'mfparams');
tmp = get(paramHndl, 'Userdata');
param = curr_info(1,1) - tmp(1) + tmp(2:length(tmp));
set(lineH, 'ydata', evalmf(x, param, mf_type));
set(leftlowH, 'xdata', real(square) + param(1));
set(lefthighH, 'xdata', real(square) + param(2));
set(righthighH, 'xdata', real(square) + param(3));
set(rightlowH, 'xdata', real(square) + param(4));
set(paramH, 'string', mat2str(param, 3));
end
elseif strcmp(mf_type, 'gaussmf'),
sigma = param(1); c = param(2);
height = 0.5;
if get(leftlowH, 'userdata'),
if curr_info(1,1) < c,
param(1) = (c-curr_info(1,1))/sqrt(-2*log(height));
sigma = param(1); c = param(2);
set(lineH, 'ydata', evalmf(x, param, mf_type));
set(leftlowH,'xdata', real(square)+curr_info(1,1));
set(rightlowH,'xdata', real(square)+2*c-curr_info(1,1));
set(paramH, 'string', mat2str(param, 3));
end
elseif get(rightlowH, 'userdata'),
if curr_info(1,1) > c,
param(1) = (curr_info(1,1)-c)/sqrt(-2*log(height));
sigma = param(1); c = param(2);
set(lineH, 'ydata', evalmf(x, param, mf_type));
set(rightlowH,'xdata', real(square)+curr_info(1,1));
set(leftlowH,'xdata', real(square)+2*c-curr_info(1,1));
set(paramH, 'string', mat2str(param, 3));
end
elseif gco == lineH,
paramHndl = findobj(gcf, 'Tag', 'mfparams');
tmp = get(paramHndl, 'Userdata');
param(2) = curr_info(1,1) - tmp(1) + tmp(3);
sigma = param(1); c = param(2);
set(lineH, 'ydata', evalmf(x, param, mf_type));
set(leftlowH, 'xdata', real(square) + ...
c-sigma*sqrt(-2*log(height)));
set(rightlowH, 'xdata', real(square) + ...
c+sigma*sqrt(-2*log(height)));
set(paramH, 'string', mat2str(param, 3));
end
elseif strcmp(mf_type, 'gauss2mf'),
s1=param(1); c1=param(2); s2=param(3); c2=param(4);
height = 0.5;
if get(leftlowH, 'userdata'),
spread = param(1)*sqrt(-2*log(height));
param(2) = curr_info(1,1)+spread;
set(lineH, 'ydata', evalmf(x, param, mf_type));
set(lefthighH,'xdata', real(square)+param(2));
set(leftlowH,'xdata', param(2)-spread+real(square));
set(paramH, 'string', mat2str(param, 3));
elseif get(rightlowH, 'userdata'),
spread = param(3)*sqrt(-2*log(height));
param(4) = curr_info(1,1)-spread;
set(lineH, 'ydata', evalmf(x, param, mf_type));
set(righthighH,'xdata', real(square)+param(4));
set(rightlowH,'xdata', param(4)+spread+real(square));
set(paramH, 'string', mat2str(param, 3));
elseif get(lefthighH, 'userdata'),
spread = curr_info(1,1)-(c1-s1*sqrt(-2*log(height)));
if spread > 0,
param(1) = spread/sqrt(-2*log(height));
param(2) = curr_info(1,1);
set(lineH, 'ydata', evalmf(x, param, mf_type));
set(lefthighH, 'xdata', real(square)+curr_info(1,1));
set(paramH, 'string', mat2str(param, 3));
end
elseif get(righthighH, 'userdata'),
spread = -(curr_info(1,1) - ...
(c2+s2*sqrt(-2*log(height))));
if spread > 0,
param(3) = spread/sqrt(-2*log(height));
param(4) = curr_info(1,1);
set(lineH, 'ydata', evalmf(x, param, mf_type));
set(righthighH, 'xdata', real(square)+curr_info(1,1));
set(paramH, 'string', mat2str(param, 3));
end
elseif gco == lineH,
paramHndl = findobj(gcf, 'Tag', 'mfparams');
tmp = get(paramHndl, 'userdata');
% tmp = str2mat(tmpstr);
% tmp = get(lineH, 'userdata');
param(2) = curr_info(1,1) - tmp(1) + tmp(3);
param(4) = curr_info(1,1) - tmp(1) + tmp(5);
s1=param(1); c1=param(2); s2=param(3); c2=param(4);
height = 0.5;
x_left = c1 - s1*sqrt(-2*log(height));
x_right = c2 + s2*sqrt(-2*log(height));
set(lineH, 'ydata', evalmf(x, param, mf_type));
set(leftlowH, 'xdata', x_left+real(square));
set(rightlowH, 'xdata', x_right+real(square));
set(lefthighH, 'xdata', param(2)+real(square));
set(righthighH, 'xdata', param(4)+real(square));
set(paramH, 'string', mat2str(param, 3));
end
elseif strcmp(mf_type, 'sigmf'),
a = param(1); c = param(2);
height = 0.1;
if get(leftlowH, 'userdata'),
if curr_info(1,1) == c,
param(1) = realmax;
else
param(1) = -log(1/height-1)/(curr_info(1,1)-c);
end
a = param(1); c = param(2);
set(lineH, 'ydata', evalmf(x, param, mf_type));
set(leftlowH,'xdata',real(square)+curr_info(1,1));
set(righthighH,'xdata',real(square)+2*c-curr_info(1,1));
set(paramH, 'string', mat2str(param, 3));
elseif get(righthighH, 'userdata'),
if curr_info(1,1) == c,
param(1) = realmax;
else
param(1) = -log(1/(1-height)-1)/(curr_info(1,1)-c);
end
a = param(1); c = param(2);
set(lineH, 'ydata', evalmf(x, param, mf_type));
set(righthighH, 'xdata', real(square)+curr_info(1,1));
set(leftlowH, 'xdata', real(square)+2*c-curr_info(1,1));
set(paramH, 'string', mat2str(param, 3));
elseif gco == lineH,
paramHndl = findobj(gcf, 'Tag', 'mfparams');
tmp = get(paramHndl, 'Userdata');
% tmp = str2mat(tmpstr);
% tmp = get(lineH, 'userdata');
param(2) = curr_info(1,1) - tmp(1) + tmp(3);
a = param(1); c = param(2);
set(lineH, 'ydata', evalmf(x, param, mf_type));
set(leftlowH, 'xdata', ...
c-log(1/height-1)/a + real(square));
set(righthighH, 'xdata', ...
c-log(1/(1-height)-1)/a + real(square));
set(paramH, 'string', mat2str(param, 3));
end
elseif strcmp(mf_type, 'gbellmf'),
height = 0.9;
if get(leftlowH, 'userdata'),
if curr_info(1,1) < param(3),
param(1) = param(3)-curr_info(1,1);
a = param(1); b = param(2); c = param(3);
set(lineH, 'ydata', evalmf(x, param, mf_type));
set(leftlowH, 'xdata', curr_info(1,1)+real(square));
set(rightlowH, 'xdata',2*c-curr_info(1,1)+real(square));
set(lefthighH, 'xdata', ...
c-a*(1/height-1)^(1/(2*b))+real(square));
set(righthighH, 'xdata', ...
c+a*(1/height-1)^(1/(2*b))+real(square));
set(paramH, 'string', mat2str(param, 3));
end
elseif get(rightlowH, 'userdata'),
if curr_info(1,1) > param(3),
param(1) = curr_info(1,1)-param(3);
a = param(1); b = param(2); c = param(3);
set(lineH, 'ydata', evalmf(x, param, mf_type));
set(rightlowH, 'xdata', curr_info(1,1)+real(square));
set(leftlowH, 'xdata', 2*c-curr_info(1,1)+real(square));
set(lefthighH, 'xdata', ...
c-a*(1/height-1)^(1/(2*b))+real(square));
set(righthighH, 'xdata', ...
c+a*(1/height-1)^(1/(2*b))+real(square));
set(paramH, 'string', mat2str(param, 3));
end
elseif get(lefthighH, 'userdata'),
tmp = abs((curr_info(1,1)-param(3))/param(1));
if tmp == 0,
param(2) = eps;
elseif tmp == 1,
param(2) = realmax;
else
param(2) = log(1/height-1)/(2*log(tmp));
end
a = param(1); b = param(2); c = param(3);
set(lineH, 'ydata', evalmf(x, param, mf_type));
set(lefthighH, 'xdata', curr_info(1,1)+real(square));
set(righthighH, 'xdata', 2*c-curr_info(1,1)+real(square));
set(paramH, 'string', mat2str(param, 3));
elseif get(righthighH, 'userdata'),
tmp = abs((curr_info(1,1)-param(3))/param(1));
if tmp == 0,
param(2) = eps;
elseif tmp == 1,
param(2) = realmax;
else
param(2) = log(1/height-1)/(2*log(tmp));
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -