Azzera filtri
Azzera filtri

who to write this function in another way?

1 visualizzazione (ultimi 30 giorni)
Mohammad Alhaddad
Mohammad Alhaddad il 22 Set 2021
Risposto: Steven Lord il 22 Set 2021
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
  2 Commenti
Mohammad Alhaddad
Mohammad Alhaddad il 22 Set 2021
i know but I didnot want the second code I want convert to this
outputvalue = map(sensorValue, low input , high input , low output , high input);
y = map(u, -1 , 1 , 0 , 0.5);

Accedi per commentare.

Risposte (3)

Chunru
Chunru il 22 Set 2021
fcn(-5)
ans = 0.2500
fcn(.34)
ans = 0.3000
fcn(4)
ans = 1
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 Commenti
Chunru
Chunru il 22 Set 2021
What do you mean by saying "this numbers input -1:1:100 output 0:1:100" ?
Mohammad Alhaddad
Mohammad Alhaddad il 22 Set 2021
the input beween -1 to 1 and Divided into 100 sections. and match with out put from 0 to 1 and Divided into 100 sections.

Accedi per commentare.


Mohammad Alhaddad
Mohammad Alhaddad il 22 Set 2021
Modificato: Mohammad Alhaddad il 22 Set 2021
Like this but this in ardino sysem
  1 Commento
Chunru
Chunru il 22 Set 2021
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

Accedi per commentare.


Steven Lord
Steven Lord il 22 Set 2021
Try using the discretize function.

Categorie

Scopri di più su Arduino Hardware in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by