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

*No products are associated with this question.*

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)

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

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)

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

Related Content

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

Learn moreOpportunities for recent engineering grads.

Apply Today
## 0 Comments