How can I apply Fuzzy Inference System in MATLAB App Designer

Good day to all.
I have designed a system using Fuzzy Logic Toolbox and now I want to implement the Fuzzy Inference System in the standalone application which I am going to develop using MATLAB App Designer.
The basic function of the application is to calculate the risk level of the disease using fuzzy logic. The user will be required to insert the inputs in numerical forms and the ouput will be the risk level. So there will be a button to allow the user to press in order to generate the output.
My question is how to link the .fis file in the button of the App Designer?

 Réponse acceptée

Hi, you can use uigetfile to achieve the same.
  1. Drag and drop the button onto the designer workspace
  2. Right click the button, hover over 'callbacks', select 'AddButtonPushedFcn callback'
  3. Paste the following code inside the ButtonPushed function
[file,path] = uigetfile('*.fis');
selectedfile = fullfile(path,file);
fuzzyLogicDesigner(selectedfile);
4. Save & Run the App.

Plus de réponses (3)

Li Mun Ng
Li Mun Ng le 6 Août 2019
Firstly, thank you so much responding to my question, Subhadeep Koley.
I have tried using the setps suggested by you. However, it will open the .fis file and I still need to insert my data in fis in order to get my result which I intend not to do in fis. But I would like to have a uer interface to execute the calculation part without using fis toolbox. Pardon me, is there an alternative way of computing the fis in my App Designer?
This is how the user interface looks like, but I haven't been able to connect the inputs and output to the fuzzy button in order to genarte the result.
Screenshot (65).png

4 commentaires

Hi, I understand the issue.
Go to "Fuzzy Button > callbacks > AddButtonPushedFcn callback" and paste the following code
fis = readfis('yourFIS');
i1=app.IP1EditField.Value; % replace "IP1.EditField" with your field name
i2=app.IP2EditField.Value; % do the same for all the input & output fields
i3=app.IP3EditField.Value;
i4=app.IP4EditField.Value;
inputs=[i1 i2 i3 i4];
output = evalfis(fis,inputs);
app.OPEditField.Value=output;
This might be helpful.
Thank you again and I appreciate it. I have tried using the steps and it got error on the second argument that says it must be in FIS structure (as shown in figure below) . But I already checked that the command is actually following the FIS structure. I can't see which part went wrong.
Screenshot (67).png
When I am executing the same code for the MATLAB in-built "tipper.fis" fis file it is giving me correct Output everytime.
function FuzzyButtonPushed(app, event)
fis = readfis('tipper');
i1=app.IP1EditField.Value;
i2=app.IP2EditField.Value;
inputs=[i1 i2];
output = evalfis(inputs,fis);
app.OPEditField.Value=output;
end
Therefore it is difficult to say which part went wrong without knowing what inputs your fis expect.
Capture.PNG
Thank you Subhadeep for your patience and advice and I will try troubleshooting what causes the error. :D

Connectez-vous pour commenter.

chiwapon nitnara
chiwapon nitnara le 2 Mar 2020
from this code i'm try to use this code to 2 output how to??? Thank you

Catégories

En savoir plus sur Fuzzy Logic in Simulink dans Centre d'aide et File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by