plotting a graph of time vs gear...updated

3 views (last 30 days)
based on V=1.5*t^2
a car has an auto-transmission that selects gear based on speed values.
Gear1: >=0 and < 3m/s
Gear2: >=3 and < 8 m/s
Gear3:>=8 and < 15 m/s
and so on...need to graph this and not sure where to start. Thank you
here's what I have...The first graph works perfect...its the second one im stuck on...thanks
t=1:1:6;
V=1.5*t.^2;
plot(t,V)
grid on % adds grid lines
xlabel('Time(s)') % adds x label
ylabel('Speed(m/s)') % ADDS Y LABEL
title('Speed of a Car') % adds Title
t=1:.1:6;
V=(1.5)*t.^2;
if (V>= 0 & V < 3)
Gear=1;
elseif (V>=3 & V < 8)
Gear=2;
elseif (V>= 8 & V < 15)
Gear=3;
elseif (V>= 15 & V< 25)
Gear=4;
else
Gear=5;
end
figure % opens 2nd graph
plot(t,Gear)
grid on
xlabel('Time(s)')
ylabel('Gear')
title('Gear Selection')

Accepted Answer

Matt Tearle
Matt Tearle on 13 Feb 2014
If I interpret this correctly, you're trying to see which gear you're in at time t? So you need to calculate v from t, then g (= 1, 2, or 3) from v. The neatest way to do that is to use histc for binning:
t = linspace(0,5);
v = 1.5*t.^2;
[~,g] = histc(v,[3 8 15 Inf]);
subplot(2,1,1)
plot(t,v)
subplot(2,1,2)
plot(t,g)
Note: if this happens to be a homework problem, do not hand this in! It is almost certainly not what the expected answer will be, and will be a pretty major flag that you didn't do it yourself :) Instead, let me know, and I'll give you pointers in the "right" direction...
  3 Comments
Matt Tearle
Matt Tearle on 13 Feb 2014
Your problem is that Gear is a scalar value. Your logical conditions are doing something hairy and unexpected because V is a vector, so V < 3 is a logical array, not a scalar condition. However, when used in an if statement, MATLAB goes ahead and decides to do something anyway (something that I doubt you actually want it to do). But in the end, it's making a single logical choice, and producing a single value for Gear.
What you need is that for each value of V, to determine the corresponding value for Gear (which, at the end, should be a vector the same size as V).
There are a few different ways to do that. The neatest, IMO, is the one I showed with histc.
Joseph
Joseph on 13 Feb 2014
That worked great...I posted another question a couple hours ago about a conversion program...any help with that would be appreciated

Sign in to comment.

More Answers (0)

Categories

Find more on Graphics Objects in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!