主题:幫我看看!這樣寫有沒有錯,如何修改比較好?
幫我看看!這樣寫有沒有錯,
有一堆都是0*0的運算
如何修改比較好?
1.求 x,phi在每個函數的值
ex: ux =[0.2 0.6 0.7 0.8 0.1];
UX =[x_S2 x_S1 x_CE x_B1 x_B2];
2.找出x,phi 最大的值,其他為0
ex: ux =[0 0 0 0.8 0 ];
UX =UX.*(UX==max(UX));
3.ux * vy 得到 一個2為陣列
for i=1:length(A)
for j=1:length(B)
Rm(i,j)=A(i)*B(j);
end
end
= [0 0 0 0 0;
0 0 0 0 0;
0 0 0 0 0;
0 0 0 0 0;
0 0 0 0 0;
0 0 0 0 0;
0 0 0 0.56 0];
4.在ux * vy 與 規則庫相乘
base.*Rm
[S2*0 S3*0
S2*0 ...
B1*0 ...
B2*0 ...
B2*0 ...
0*0
0 *0 B3*0 B3*0 B3*0.56 B2*0;]
5.求出整個矩陣的和B3*0.56,也就推得到tho=22.4
tho = sum(sum(base.*Rm));
function tho = cart_approximate(x,phi)
S3=-40;S2=-30;S1=-15;CE=0.0;B1=15;B2=30;B3=40;
base= [S2 S3 0 0 0;
S2 S3 S3 S3 0;
B1 S1 S2 S3 S2;
B2 B2 CE S2 S2
B2 B3 B2 B1 S1;
0 B3 B3 B3 B2;
0 0 0 B3 B2];
x_S2 =exp(-0.2*(x-(0))^2);
x_S1 =exp(-0.2*(x-(5))^2);
x_CE =exp(-0.2*(x-(10))^2);
x_B1 =exp(-0.2*(x-(15))^2);
x_B2 =exp(-0.2*(x-(20))^2);
phi_S3 =exp(-0.002*(phi-(-90))^2);
phi_S2 =exp(-0.002*(phi-(-30))^2);
phi_S1 =exp(-0.002*(phi-(30))^2);
phi_CE =exp(-0.002*(phi-(90))^2);
phi_B1 =exp(-0.002*(phi-(150))^2);
phi_B2 =exp(-0.002*(phi-(210))^2);
phi_B3 =exp(-0.002*(phi-(270))^2);
UX =[x_S2 x_S1 x_CE x_B1 x_B2];
UX =UX.*(UX==max(UX));
%disp(UX)
VY =[phi_S3 phi_S2 phi_S1 phi_CE phi_B1 phi_B2 phi_B3];
VY =VY.*(VY==max(VY));
%disp(VY)
Rm = Fuzzy_Cartesian_multiplication1(VY,UX);
tho = sum(sum(base.*Rm));
function Rm =Fuzzy_Cartesian_multiplication1(A,B)
for i=1:length(A)
for j=1:length(B)
Rm(i,j)=A(i)*B(j);
end
end
有一堆都是0*0的運算
如何修改比較好?
1.求 x,phi在每個函數的值
ex: ux =[0.2 0.6 0.7 0.8 0.1];
UX =[x_S2 x_S1 x_CE x_B1 x_B2];
2.找出x,phi 最大的值,其他為0
ex: ux =[0 0 0 0.8 0 ];
UX =UX.*(UX==max(UX));
3.ux * vy 得到 一個2為陣列
for i=1:length(A)
for j=1:length(B)
Rm(i,j)=A(i)*B(j);
end
end
= [0 0 0 0 0;
0 0 0 0 0;
0 0 0 0 0;
0 0 0 0 0;
0 0 0 0 0;
0 0 0 0 0;
0 0 0 0.56 0];
4.在ux * vy 與 規則庫相乘
base.*Rm
[S2*0 S3*0
S2*0 ...
B1*0 ...
B2*0 ...
B2*0 ...
0*0
0 *0 B3*0 B3*0 B3*0.56 B2*0;]
5.求出整個矩陣的和B3*0.56,也就推得到tho=22.4
tho = sum(sum(base.*Rm));
function tho = cart_approximate(x,phi)
S3=-40;S2=-30;S1=-15;CE=0.0;B1=15;B2=30;B3=40;
base= [S2 S3 0 0 0;
S2 S3 S3 S3 0;
B1 S1 S2 S3 S2;
B2 B2 CE S2 S2
B2 B3 B2 B1 S1;
0 B3 B3 B3 B2;
0 0 0 B3 B2];
x_S2 =exp(-0.2*(x-(0))^2);
x_S1 =exp(-0.2*(x-(5))^2);
x_CE =exp(-0.2*(x-(10))^2);
x_B1 =exp(-0.2*(x-(15))^2);
x_B2 =exp(-0.2*(x-(20))^2);
phi_S3 =exp(-0.002*(phi-(-90))^2);
phi_S2 =exp(-0.002*(phi-(-30))^2);
phi_S1 =exp(-0.002*(phi-(30))^2);
phi_CE =exp(-0.002*(phi-(90))^2);
phi_B1 =exp(-0.002*(phi-(150))^2);
phi_B2 =exp(-0.002*(phi-(210))^2);
phi_B3 =exp(-0.002*(phi-(270))^2);
UX =[x_S2 x_S1 x_CE x_B1 x_B2];
UX =UX.*(UX==max(UX));
%disp(UX)
VY =[phi_S3 phi_S2 phi_S1 phi_CE phi_B1 phi_B2 phi_B3];
VY =VY.*(VY==max(VY));
%disp(VY)
Rm = Fuzzy_Cartesian_multiplication1(VY,UX);
tho = sum(sum(base.*Rm));
function Rm =Fuzzy_Cartesian_multiplication1(A,B)
for i=1:length(A)
for j=1:length(B)
Rm(i,j)=A(i)*B(j);
end
end