Matlab graph doesnt look right...not a sinusoid...
Show older comments
Ok so I had to plot a graph that fulfills those conditions in the function.. But when I plot the graph version using fplot(@qtsolver,[0 6*pi]) it plots out a diagonal line with a kink at pi and 2 pi, but shouldnt it print a sinusoid or at least something curvy? I feel like my codes all correct but I dont feel like the graph is :(
function qt = qtsolver(t)
if (0<=t) && (t<pi) qt= 2*t - 0.8*sin(2.5)*t;
else if (pi<=t) && (t<2*pi) qt = 4*pi - 2*t -0.8*sin(2.5)*t-1.6*cos(2.5)*t;
else if (t>= 2*pi) qt = -1.6*cos(2.5)*t;
end
end
end
Answers (2)
Your function calculates the points separately. But as far as I can see, fplot expects a vector output for a vector input:
function qt = qtsolver(t)
qt = zeros(size(t)); % Pre-allocate
index = (0<=t) && (t<pi);
qt(index) = 2*t(index) - 0.8*sin(2.5)*t(index);
index = (pi<=t) && (t<2*pi);
qt(index) = 4*pi - 2*t(index) -0.8*sin(2.5)*t(index)-1.6*cos(2.5)*t(index);
index = (t>= 2*pi)
qt(index) = -1.6*cos(2.5)*t(index);
[EDITED], t -> t(index)
Andrei Bobrov
on 10 Apr 2013
function out = qtsolver(x)
f = {@(t)2*t-.8*sin(2.5*t),...
@(t)4*pi-2*t-0.8*sin(2.5*t)-1.6*cos(2.5*t),...
@(t)-1.6*cos(2.5*t)};
[~,iii] = histc(x,[0 pi 2*pi inf]);
out = arrayfun(@(y,z)y{:}(z),f(iii),x);
end
Categories
Find more on 2-D and 3-D Plots 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!