Problem plotting a function

2 views (last 30 days)
Erbaz Khan
Erbaz Khan on 23 Apr 2018
Commented: Walter Roberson on 24 Apr 2018
I am having problem plotting the function. When I try to run the code it says "Error using plot Data must be numeric, datetime, duration or an array convertible to double."
syms w;
X = (2*w + 3).*(heaviside(w+6)-heaviside(w+4));
X = X + ((-2*w - 1).*(heaviside(w+4)-heaviside(w+2)));
w = -10:10;
plot(w, X)

Accepted Answer

Walter Roberson
Walter Roberson on 23 Apr 2018
plot(w, subs(X))
  2 Comments
Erbaz Khan
Erbaz Khan on 23 Apr 2018
Can you please explain why did you use subs(X) instead of X?
Walter Roberson
Walter Roberson on 24 Apr 2018

When you use

syms w

and then construct a formula using w, then the w in the resulting formula is not a reference to "the current value of the variable w if it has been assigned a value"

Just like if you do

A = 2
B = A * 3
A = 5

then B copied the current value of A at the time of execution, rather than making B a formula that has a reference to the current value of A with B intended to update as A updates.

The situation is the same with the symbolic engine: when you refer to w the current value of w is copied, rather than a reference being made to whatever value of w is current. Therefore when you assign a numeric value to w after constructing a formula with symbolic w, the formula does not change to evaluate according to the new w value. You need to instruct the symbolic engine to look through the workspace to find values for the symbolic variables in the expression and incorporate them into the expression; subs() tells it to do that.

Sign in to comment.

More Answers (0)

Categories

Find more on Creating, Deleting, and Querying Graphics Objects 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!