Nested for loop produces plot that is shifted horizontally

1 visualizzazione (ultimi 30 giorni)
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?

Risposta accettata

sloppydisk
sloppydisk il 27 Mag 2018
Modificato: sloppydisk il 27 Mag 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);

Più risposte (0)

Categorie

Scopri di più su Loops and Conditional Statements 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