کنترل زاویه پاندول معکوس به روش فازی در MATLAB
clear
clc
a=newfis('pendulum');
a.input(1).name='tetha';
a.input(1).range=[-0.1 0.1];
a.input(1).mf(1).name='NB';
a.input(1).mf(1).type='trapmf';
a.input(1).mf(1).params=[-1 -1 -0.1 0];
a.input(1).mf(2).name='Z';
a.input(1).mf(2).type='trapmf';
a.input(1).mf(2).params=[-0.1 0 0 0.1];
a.input(1).mf(3).name='PB';
a.input(1).mf(3).type='trapmf';
a.input(1).mf(3).params=[0 0.1 1 1];
%--------------------------------------------tdot
a.input(2).name='tdot';
a.input(2).range=[-0.5 0.5];
a.input(2).mf(1).name='NB';
a.input(2).mf(1).type='trapmf';
a.input(2).mf(1).params=[-5 -5 -0.5 0];
a.input(2).mf(2).name='Z';
a.input(2).mf(2).type='trapmf';
a.input(2).mf(2).params=[-0.5 0 0 0.5];
a.input(2).mf(3).name='PB';
a.input(2).mf(3).type='trapmf';
a.input(2).mf(3).params=[0 0.5 5 5];
%--------------------------------------------x
a.input(3).name='x';
a.input(3).range=[-1 1];
a.input(3).mf(1).name='NB';
a.input(3).mf(1).type='trapmf';
a.input(3).mf(1).params=[-10 -10 -1 0];
a.input(3).mf(2).name='Z';
a.input(3).mf(2).type='trapmf';
a.input(3).mf(2).params=[-1 0 0 1];
a.input(3).mf(3).name='PB';
a.input(3).mf(3).type='trapmf';
a.input(3).mf(3).params=[0 1 10 10];
%--------------------------------------------xdot
a.input(4).name='xdot';
a.input(4).range=[-1 1];
a.input(4).mf(1).name='NB';
a.input(4).mf(1).type='trapmf';
a.input(4).mf(1).params=[-10 -10 -1 0];
a.input(4).mf(2).name='Z';
a.input(4).mf(2).type='trapmf';
a.input(4).mf(2).params=[-1 0 0 1];
a.input(4).mf(3).name='PB';
a.input(4).mf(3).type='trapmf';
a.input(4).mf(3).params=[0 1 10 10];
%--------------------------------------------f
a.output(1).name='f';
a.output(1).range=[-100 100];
a.output(1).mf(1).name='NB';
a.output(1).mf(1).type='trapmf';
a.output(1).mf(1).params=[-1000 -1000 -100 0];
a.output(1).mf(2).name='Z';
a.output(1).mf(2).type='trapmf';
a.output(1).mf(2).params=[-100 0 0 100];
a.output(1).mf(3).name='PB';
a.output(1).mf(3).type='trapmf';
a.output(1).mf(3).params=[0 100 1000 1000];
%--------------------------------------------rule1
a.rule(1).antecedent=[3 3 0 0];
a.rule(1).consequent=[3];
a.rule(1).weight=1;
a.rule(1).connection=1;
%--------------------------------------------rule2
a.rule(2).antecedent=[3 2 0 0];
a.rule(2).consequent=[3];
a.rule(2).weight=1;
a.rule(2).connection=1;
%--------------------------------------------rule3
a.rule(3).antecedent=[3 1 0 0];
a.rule(3).consequent=[2];
a.rule(3).weight=1;
a.rule(3).connection=1;
%--------------------------------------------rule4
a.rule(4).antecedent=[2 3 0 0];
a.rule(4).consequent=[3];
a.rule(4).weight=1;
a.rule(4).connection=1;
%--------------------------------------------rule5
a.rule(5).antecedent=[2 2 0 0];
a.rule(5).consequent=[2];
a.rule(5).weight=1;
a.rule(5).connection=1;
%--------------------------------------------rule6
a.rule(6).antecedent=[2 1 0 0];
a.rule(6).consequent=[1];
a.rule(6).weight=1;
a.rule(6).connection=1;
%--------------------------------------------rule7
a.rule(7).antecedent=[1 3 0 0];
a.rule(7).consequent=[2];
a.rule(7).weight=1;
a.rule(7).connection=1;
%--------------------------------------------rule8
a.rule(8).antecedent=[1 2 0 0];
a.rule(8).consequent=[1];
a.rule(8).weight=1;
a.rule(8).connection=1;
%--------------------------------------------rule9
a.rule(9).antecedent=[1 1 0 0];
a.rule(9).consequent=[1];
a.rule(9).weight=1;
a.rule(9).connection=1;
%--------------------------------------------rule10
a.rule(10).antecedent=[0 3 0 0];
a.rule(10).consequent=[3];
a.rule(10).weight=1;
a.rule(10).connection=1;
%--------------------------------------------rule11
a.rule(11).antecedent=[0 1 0 0];
a.rule(11).consequent=[1];
a.rule(11).weight=1;
a.rule(11).connection=1;
اين وبلاگ به صورت تخصصي به بررسي شبکه های عصبی در نرم افزار متلب (MATLAB) و سیمولینک (Simulnik) ميپردازد.