How can I plot a conditional function?
16 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Duncan Cameron
am 2 Mär. 2015
Bearbeitet: Andrei Bobrov
am 3 Mär. 2015
I am trying to combine logarithmic (BH2) and polynomial (BH1) trendlines into a blended trendline (BH3) that passes through the origin. My current code plots BH3 for the final condition for all t. Please could someone offer corrected code? Here are functions and problematic code is below. Many thanks in advance.
- BH1: y = 7.1851*ln(t)-2.62
- BH2: y = -0.06*t^2+2.185*t
- BH3: 0<t<=3.07 y= BH2 3.07<t<=7.92 y= 0.67*BH2+0.33*BH1 t>7.92 y= 0.5*BH1+0.5*BH2
t = 0:0.5:30; %define time vector
BH1 = 7.81*log(t)-2.625; %define logarithmic trend
BH2 = -0.06*t.^2+2.19*t; %define polynomial trend
%now define combination of trends
if t <= 3.07 %force through origin
BH3 = BH2;
elseif 3.07 < t <= 7.92; %intial blend
BH3 = 0.67*BH2 + 0.33*BH1;
else %equal blend
BH3 = 0.5*BH2 + 0.5*BH1;
end
plot(t,BH1,'r',t,BH2,'r',t,BH3,'b');
0 Kommentare
Akzeptierte Antwort
Andrei Bobrov
am 2 Mär. 2015
Bearbeitet: Andrei Bobrov
am 3 Mär. 2015
t2 = 3.07 < t & t <= 7.92; % EDIT
t3 = t > 7.92;
BH3 = BH2;
BH3(t2) = BH3(t2)*.67 + BH1(t2)*.33;
BH3(t3) = BH3(t3)*.5 + BH1(t3)*.5;
2 Kommentare
Weitere Antworten (1)
Adam
am 2 Mär. 2015
BH3( t <= 3.07 ) = BH2;
blendIndices = 3.07 < t && t <= 7.92;
BH3( blendIndices ) = 0.67 * BH2( blendIndices ) + 0.33 * BH1( blendIndices );
BH3( t > 7.92 ) = 0.5 * BH2( t > 7.92 ) + 0.5 * BH1( t > 7.92 );
should work I think though I wrote that off my head without testing it on command line. Hopefully you get the idea though.
t is a vector of values so you can't test it in an if statement in the way you are because the statement
t <= 3.07
is actually a logical vector of the same length as t, not a single value that can be tested for an if statement. The above solution uses logical indexing to achieve what I think you want to achieve.
2 Kommentare
Siehe auch
Kategorien
Mehr zu Logical finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
