Problem multiplying exponential function with negative value

조회 수: 50 (최근 30일)
Hasib Ryan Rahman
Hasib Ryan Rahman 2022년 2월 11일
편집: Voss 2022년 2월 11일
I want to plot x(t) = t*(e−0.15t), − 20 ≤ t ≤ 20
I've tried:
t = -20:1:20;
x(t) = t.*(exp(-0.15*t));
Array indices must be positive integers or logical values.
plot(t,x(t))

채택된 답변

Voss
Voss 2022년 2월 11일
This statement
x(t) = t.*(exp(-0.15*t));
says to set the value of x at indexes given by t to the expression on the right-hand side. Indexes must be positive integers (1, 2, 3, ...), but t has some negative values and a zero value in it, so that's why the error happens.
In fact the syntax for what you want to do is slightly simpler. You can just say:
t = -20:1:20;
% no need to specify indexes into x, just set the whole thing:
x = t.*(exp(-0.15*t));
Then to plot:
plot(t,x)
  댓글 수: 1
Voss
Voss 2022년 2월 11일
편집: Voss 2022년 2월 11일
That makes t and x each vectors. Alternatively, you can make x a function of t if you want, and do the same thing:
x = @(t)t.*(exp(-0.15*t));
In this case the syntax x(t) evaluates the function x at the values of t given in t. Then your original syntax in the plot statement would be correct:
t = -20:1:20;
plot(t,x(t));

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Yongjian Feng
Yongjian Feng 2022년 2월 11일
Try this:
t = -20:1:20;
x_t = t.*(exp(-0.15*t));
plot(t, x_t)

카테고리

Help CenterFile Exchange에서 Resizing and Reshaping Matrices에 대해 자세히 알아보기

태그

제품


릴리스

R2015a

Community Treasure Hunt

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

Start Hunting!

Translated by