who to write this function in another way?
조회 수: 1 (최근 30일)
이전 댓글 표시
I did this function but I didn't want like this long. I try to put in MATLAB Function in simulink
I want like this but I did not where my mistake?
outputvalue = map(sensorValue, low input , high input , low output , high input);
y = map(u, -1 , 1 , 0 , 0.5);
that what I did
function y = fcn(u)
if u <(-0.9)
y=0.25;
elseif u < (-0.8)
y=0.20;
elseif u < (-0.6)
y=0.15;
elseif u < (-0.4)
y=0.10;
elseif u < (-0.2)
y=0.05;
elseif u < 0.2
y=0;
elseif u < 0.4
y=0.30;
elseif u < 0.6
y=0.35;
elseif u < 0.8
y=0.40;
elseif u < 0.9
y=0.45;
elseif u < 1.5
y=0.50;
else
y=1;
end
답변 (3개)
Chunru
2021년 9월 22일
fcn(-5)
fcn(.34)
fcn(4)
function y = fcn(u)
x0 = [-inf -0.9 -0.8 -0.6 -0.4 -0.2 0.2 0.4 0.6 0.8 0.9 1.5];
y0 = [0.25 0.20 0.15 0.10 0.05 0 0.30 0.35 0.40 0.45 0.50 1 ];
idx = find(u > x0, 1, 'last' );
y = y0(idx);
end
댓글 수: 3
Mohammad Alhaddad
2021년 9월 22일
편집: Mohammad Alhaddad
2021년 9월 22일
댓글 수: 1
Chunru
2021년 9월 22일
This looks like a new question and you should have started a new question. The old question has been answered already.
Anyway, the solution to the problem is rather straightforwad:
x = 0:.1:1023;
y = map(x, 0, 1023, 0, 255);
plot(x(1:200), y(1:200));
function y = map(x, in0, in1, out0, out1)
y = floor((x-in0)/(in1-in0) * (out1-out0)) + out0;
end
참고 항목
카테고리
Help Center 및 File Exchange에서 Arduino Hardware에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!