Why won't this function plot?

For some reason I can't plot this function.
t=0:30;
c1_exp = b1*exp(-a1*t) + b2*exp(-a2*t);
All variables except for t are constants.
I've tried
fplot(c1_exp, 'g-', 'Linewidth', 3)
and
for ii= 1:30
plot(c1_exp(:,ii))
end
Nothing happens but I don't get any error messages.
What am I doing wrong?

1 commentaire

What are the magnitudes (or the actual values) of your coefficients? If the value inside the exp calls gets too small, the exponential would underflow to 0.
exp(-750) % underflow
ans = 0
So if your a values were on the order of say 1000 only the points with t = 0 could possibly plot.
a = 1000;
t = 0:10;
y = exp(-a*t)
y = 1×11
1 0 0 0 0 0 0 0 0 0 0

Connectez-vous pour commenter.

Réponses (2)

Simon Chan
Simon Chan le 19 Jan 2022

0 votes

No need to use the for loop, Just use the following:
plot(c1_exp)

2 commentaires

AUSTIN WHITELEY
AUSTIN WHITELEY le 19 Jan 2022
that doesn't work
Voss
Voss le 19 Jan 2022
Are one or more of the constants NaN?

Connectez-vous pour commenter.

Voss
Voss le 19 Jan 2022

0 votes

Try
plot(c1_exp)
or
plot(t,c1_exp)
With your for loop, you're plotting one data point at a time, which is impossible to see without a data marker. And fplot() is for plotting with a function handle, e.g.,
fplot(@(t) b1*exp(-a1*t) + b2*exp(-a2*t))

Produits

Version

R2021a

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by