www.gusucode.com > 《模式识别与智能计算》matlab源代码 > 《模式识别与智能计算》matlab源代码/《模式识别与智能计算》部分函数的源程序/书程序/第4章/water_mu.m

    function y=water_mu(x)  
y=zeros(5,6);
DO=[7.5 6 5 3 2];
KMnO4=[2 4 6 10 15];
BOD5=[3 3 4 6 10];
NH3_N=[0.15 0.5 1 1.5 2];
C6H5OH=[0.002 0.002 0.005 0.01 0.1];

m_do=mean(DO);
m_kmno4=mean(KMnO4);
m_bod5=mean(BOD5);
m_nh3=mean(NH3_N);
m_c6h5oh=mean(C6H5OH);




w_do=x(1)/m_do;w_do=1/w_do;
w_kmno4=x(2)/m_kmno4;
w_bod5=x(3)/m_bod5;
w_nh3=x(4)/m_nh3;
w_c6h5oh=x(5)/m_c6h5oh;

w=w_do+w_kmno4+w_bod5+w_nh3+w_c6h5oh;
w_do=w_do/w;
w_kmno4=w_kmno4/w;
w_bod5=w_bod5/w;
w_nh3=w_nh3/w;
w_c6h5oh=w_c6h5oh/w;

w1=[w_do;w_kmno4;w_bod5;w_nh3;w_c6h5oh];
y(:,end)=w1;

y(1,1:5)=do(x(1));
y(2,1:5)=kmno4(x(2));
y(3,1:5)=bod5(x(3));
y(4,1:5)=nh3(x(4));
y(5,1:5)=c6h5oh(x(5));


function y=do(x)
DO=[7.5 6 5 3 2];

if x>=DO(1)
    y(1)=1;
elseif x<=DO(2)
    y(1)=0;
elseif   x>DO(2)&&x<DO(1)
    y(1)=(x-DO(2))/(DO(1)-DO(2));
end

if x<=DO(3)||x>=DO(1)
    y(2)=0;
elseif x>DO(3)&&x<DO(2)
    y(2)=(x-DO(3))/(DO(2)-DO(3));
elseif x>=DO(2)&&x<DO(1)
    y(2)=(DO(1)-x)/(DO(1)-DO(2));
end

if x<=DO(4)||x>=DO(2)
    y(3)=0;
elseif x>DO(4)&&x<DO(3)
    y(3)=(x-DO(4))/(DO(3)-DO(4));
elseif x<DO(2)&&x>=DO(3)
    y(3)=(DO(2)-x)/(DO(2)-DO(3));
end  

if x<=DO(5)||x>=DO(3)
    y(4)=0;
elseif x>DO(5)&&x<DO(4)
    y(4)=(x-DO(5))/(DO(4)-DO(5));
elseif x<DO(3)&&x>=DO(4)
    y(4)=(DO(3)-x)/(DO(3)-DO(4));
end
 
if x<=DO(5)
    y(5)=1;
elseif x>=DO(4)
    y(5)=0;
elseif x<DO(4)&&x>DO(5)
    y(5)=(DO(4)-x)/(DO(4)-DO(5));
end   

function y=kmno4(x)
KMnO4=[2 4 6 10 15];

if x<=KMnO4(1)
    y(1)=1;
elseif x>=KMnO4(2)
    y(1)=0;
elseif   x<KMnO4(2)&&x>KMnO4(1)
    y(1)=(x-KMnO4(2))/(KMnO4(1)-KMnO4(2));
end

if x>=KMnO4(3)||x<=KMnO4(1)
    y(2)=0;
elseif x<KMnO4(3)&&x>KMnO4(2)
    y(2)=(x-KMnO4(3))/(KMnO4(2)-KMnO4(3));
elseif x<=KMnO4(2)&&x>KMnO4(1)
    y(2)=(KMnO4(1)-x)/(KMnO4(1)-KMnO4(2));
end

if x>=KMnO4(4)||x<=KMnO4(2)
    y(3)=0;
elseif x<KMnO4(4)&&x>KMnO4(3)
    y(3)=(x-KMnO4(4))/(KMnO4(3)-KMnO4(4));
elseif x>KMnO4(2)&&x<=KMnO4(3)
    y(3)=(KMnO4(2)-x)/(KMnO4(2)-KMnO4(3));
end  

if x>=KMnO4(5)||x<=KMnO4(3)
    y(4)=0;
elseif x<KMnO4(5)&&x>KMnO4(4)
    y(4)=(x-KMnO4(5))/(KMnO4(4)-KMnO4(5));
elseif x>KMnO4(3)&&x<=KMnO4(4)
    y(4)=(KMnO4(3)-x)/(KMnO4(3)-KMnO4(4));
end
 
if x>=KMnO4(5)
    y(5)=1;
elseif x<=KMnO4(4)
    y(5)=0;
elseif x>KMnO4(4)&&x<KMnO4(5)
    y(5)=(KMnO4(4)-x)/(KMnO4(4)-KMnO4(5));
end  

function y=bod5(x)
BOD5=[3 3 4 6 10];

if x<=BOD5(1)
    y(1)=1;
elseif x>BOD5(2)
    y(1)=0;
end

if x>=BOD5(3)
    y(2)=0;
elseif x<BOD5(3)&&x>=BOD5(2)
    y(2)=(x-BOD5(3))/(BOD5(2)-BOD5(3));
end

if x>=BOD5(4)||x<=BOD5(2)
    y(3)=0;
elseif x<BOD5(4)&&x>BOD5(3)
    y(3)=(x-BOD5(4))/(BOD5(3)-BOD5(4));
elseif x>BOD5(2)&&x<=BOD5(3)
    y(3)=(BOD5(2)-x)/(BOD5(2)-BOD5(3));
end  

if x>=BOD5(5)||x<=BOD5(3)
    y(4)=0;
elseif x<BOD5(5)&&x>BOD5(4)
    y(4)=(x-BOD5(5))/(BOD5(4)-BOD5(5));
elseif x>BOD5(3)&&x<=BOD5(4)
    y(4)=(BOD5(3)-x)/(BOD5(3)-BOD5(4));
end

if x>=BOD5(5)
    y(5)=1;
elseif x<=BOD5(4)
    y(5)=0;
elseif x>BOD5(4)&&x<BOD5(5)
    y(5)=(BOD5(4)-x)/(BOD5(4)-BOD5(5));
end 

function y=nh3(x)
NH3_N=[0.15 0.5 1 1.5 2];

if x<=NH3_N(1)
    y(1)=1;
elseif x>=NH3_N(2)
    y(1)=0;
elseif   x<NH3_N(2)&&x>NH3_N(1)
    y(1)=(x-NH3_N(2))/(NH3_N(1)-NH3_N(2));
end

if x>=NH3_N(3)||x<=NH3_N(1)
    y(2)=0;
elseif x<NH3_N(3)&&x>NH3_N(2)
    y(2)=(x-NH3_N(3))/(NH3_N(2)-NH3_N(3));
elseif x<=NH3_N(2)&&x>NH3_N(1)
    y(2)=(NH3_N(1)-x)/(NH3_N(1)-NH3_N(2));
end

if x>=NH3_N(4)||x<=NH3_N(2)
    y(3)=0;
elseif x<NH3_N(4)&&x>NH3_N(3)
    y(3)=(x-NH3_N(4))/(NH3_N(3)-NH3_N(4));
elseif x>NH3_N(2)&&x<=NH3_N(3)
    y(3)=(NH3_N(2)-x)/(NH3_N(2)-NH3_N(3));
end  

if x>=NH3_N(5)||x<=NH3_N(3)
    y(4)=0;
elseif x<NH3_N(5)&&x>NH3_N(4)
    y(4)=(x-NH3_N(5))/(NH3_N(4)-NH3_N(5));
elseif x>NH3_N(3)&&x<=NH3_N(4)
    y(4)=(NH3_N(3)-x)/(NH3_N(3)-NH3_N(4));
end

if x>=NH3_N(5)
    y(5)=1;
elseif x<=NH3_N(4)
    y(5)=0;
elseif x>NH3_N(4)&&x<NH3_N(5)
    y(5)=(NH3_N(4)-x)/(NH3_N(4)-NH3_N(5));
end

function y=c6h5oh(x)
C6H5OH=[0.002 0.002 0.005 0.01 0.1];

if x<=C6H5OH(1)
    y(1)=1;
elseif x>C6H5OH(2)
    y(1)=0;
end

if x>=C6H5OH(3)
    y(2)=0;
elseif x<C6H5OH(3)&&x>=C6H5OH(2)
    y(2)=(x-C6H5OH(3))/(C6H5OH(2)-C6H5OH(3));
end

if x>=C6H5OH(4)||x<=C6H5OH(2)
    y(3)=0;
elseif x<C6H5OH(4)&&x>C6H5OH(3)
    y(3)=(x-C6H5OH(4))/(C6H5OH(3)-C6H5OH(4));
elseif x>C6H5OH(2)&&x<=C6H5OH(3)
    y(3)=(C6H5OH(2)-x)/(C6H5OH(2)-C6H5OH(3));
end  

if x>=C6H5OH(5)||x<=C6H5OH(3)
    y(4)=0;
elseif x<C6H5OH(5)&&x>C6H5OH(4)
    y(4)=(x-C6H5OH(5))/(C6H5OH(4)-C6H5OH(5));
elseif x>C6H5OH(3)&&x<=C6H5OH(4)
    y(4)=(C6H5OH(3)-x)/(C6H5OH(3)-C6H5OH(4));
end
 
if x>=C6H5OH(5)
    y(5)=1;
elseif x<=C6H5OH(4)
    y(5)=0;
elseif x>C6H5OH(4)&&x<C6H5OH(5)
    y(5)=(C6H5OH(4)-x)/(C6H5OH(4)-C6H5OH(5));
end