What correction need in this..? for fuzzy

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

 채택된 답변

Walter Roberson
Walter Roberson 2013년 1월 24일

0 개 추천

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

Lalit Patil
Lalit Patil 2013년 1월 24일
편집: Lalit Patil 2013년 1월 24일
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
Walter Roberson 2013년 1월 24일
Change the 2 to 20 if you insist on using that function structure

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Jing
Jing 2013년 1월 24일

0 개 추천

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

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

댓글을 달려면 로그인하십시오.

카테고리

도움말 센터 및 File Exchange에서 Fuzzy Logic Toolbox에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by