Nested for loop produces plot that is shifted horizontally

1 view (last 30 days)
Hi, I want to set up a nested for loop to plot mRNA expression levels (y) over time (t) for different values of beta. y = 10 * beta (1 - exp(-t/10)).
time = [0 : 0.5 : 10];
beta = transpose([1 : 5]);
y = zeros(5, 21); % initializing a matrix of zeros to store y values
for time_point = 1 : length(time)
for beta_val = beta
y(beta_val, time_point) = 10 * beta .* (1 - exp(-1/10 .* (time_point)));
end
plot(time, y);
end
With this, I successfully get a plot, but it seems like the plot is shifted. y has to be zero for all plots at t=0.
Can someone tell me what I am doing wrong?

Accepted Answer

sloppydisk
sloppydisk on 27 May 2018
Edited: sloppydisk on 27 May 2018
You evaluated at the index of the timevector, rather than at the time itself. You could write time(time_point) instead to get the desired result. Or you could make just evaluate on a grid and avoid the loop altogether:
time = 0:0.5:10;
beta = (1:5)';
y = 10 * beta * (1 - exp(-.1*time));
plot(time, y);

More Answers (0)

Categories

Find more on Loops and Conditional Statements 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!