use evalfis to read input under a range
    9 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
Hi,
May i know is there any coding can can be use for evalfis to read input under range or not? For my case:
A=imread('Linggi.tif');
[m n p]=size(A)
r=A(:,:,1);
g=A(:,:,2);
b=A(:,:,3);
Y=readfis('mam.fis');
for i = 1:m,
    for j = 1:n,
          k=r(i,j) > 88 & r(i,j) <= 90;
          l=g(i,j) > 134 & g(i,j) <= 140;
          z=b(i,j) > 144 & b(i,j) <= 145;
          k1=double(k);
          l1=double(l);
          z1=double(z);
          evalfis([k1 l1 z1],Y)        
   end
  end
I find out that the output for all the row and column read are the same, which means the inference system did not run for the input.
Is that got another method of evalfis can be use for me to use to read input that contains range?
6 comentarios
  Iman Ansari
      
 el 10 de Ag. de 2013
				
      Editada: Iman Ansari
      
 el 10 de Ag. de 2013
  
			Why your inputs are logical or zero and one? Check your fuzzy system in Rule Viewer:
Y = readfis('mam.fis');
ruleview(Y)
you can enter your inputs in the lower left of the rule viewer window in the input box then press enter:
[0 0 0]
[0 1 0]
[0 0 1]
Respuesta aceptada
  Iman Ansari
      
 el 10 de Ag. de 2013
        
      Editada: Iman Ansari
      
 el 10 de Ag. de 2013
  
      In your code, input isn't same as [88 134 144]. They are logical (0,1):
evalfis([88 134 144])
but:
evalfis([0 1 1])
Maybe, this is what you want:
clear;
A=imread('Linggi.tif');
[m n p]=size(A);
r=A(:,:,1);
g=A(:,:,2);
b=A(:,:,3);
Y=readfis('mam.fis');
Mask = r > 88 & r <= 90 & g > 134 & g <= 140 & b > 144 & b <= 145;
k1=r(Mask);
l1=g(Mask);
z1=b(Mask);
Output = evalfis([k1 l1 z1],Y);
Result = A;
Result(Mask) = Output;
19 comentarios
  Iman Ansari
      
 el 11 de Ag. de 2013
				
      Editada: Iman Ansari
      
 el 11 de Ag. de 2013
  
			I used these 3 lines for testing the code, you don't need these lines.
A1 = uint8(zeros(10,10,3));
Mask = logical(randi([0 1],10,10));
Output = rand(nnz(Mask),1)*6.5;
Más respuestas (0)
Ver también
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

