MATLAB Answers

0

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

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

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..

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


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

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..


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

MATLAB Academy

New to MATLAB?

Learn MATLAB today!