Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

What correction need in this..? for fuzzy

Asked by Lalit Patil on 24 Jan 2013
 function out = Tanvismembershipfunction(x, params)
 for i=1:length(x)
 if x(i)<params(1)
  y(i)= 2 * abs(x(i) - 0.5);
 elseif x(i)<params(2)
 y(i)= 2 * abs(x(i) - 0.5);
 else x(i)<params(3)
 y(i)= 2 * abs(x(i) - 0.5);
 end
 out=.1*y'; % scaling the output to lie between 0 and 1

0 Comments

Lalit Patil

Products

No products are associated with this question.

2 Answers

Answer by Walter Roberson on 24 Jan 2013
Accepted answer

There is no way to get that graph by just altering the params() values in that code.

Instead consider

y = 2 * abs(x - 0.5)

2 Comments

Lalit Patil on 24 Jan 2013

In my plot should be 3points..

In sequence at 1,0,1 on y-axis..

But i am getting like 0.1 0 0.1

I given parameters [0 0.5 1]

Range [0 1] , dispay range [0 1]

and i modified the code above..

Walter Roberson on 24 Jan 2013

Change the 2 to 20 if you insist on using that function structure

Walter Roberson
Answer by Jing on 24 Jan 2013

If you want to use it in a fuzzy logic/control problem, TRAPMF or TRIMF can easily create the function like that.

x=0:0.1:1;
y=1-trimf(x,[0 0.5 1]);
plot(x,y)

1 Comment

Lalit Patil on 24 Jan 2013

sorry, but i want to create the same thing without function...

 x = 0:0.1:1
 for i=1:length(x)
 if x(i)<params(1)
  y(i)= 2 * abs(x(i) - 0.5);
 elseif x(i)<params(2)
  y(i)= 2 * abs(x(i) - 0.5);
 else x(i)<params(3)
  y(i)= 2 * abs(x(i) - 0.5);
 end
 end
 out=.1*y';
 plot(x,out)

This works well in command window but not in fuzzy GUI... problem is mensioned in aboves answer..

Jing

Contact us