Problem plotting a function

2 ビュー (過去 30 日間)
Erbaz Khan
Erbaz Khan 2018 年 4 月 23 日
コメント済み: Walter Roberson 2018 年 4 月 24 日
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)

採用された回答

Walter Roberson
Walter Roberson 2018 年 4 月 23 日
plot(w, subs(X))
  2 件のコメント
Erbaz Khan
Erbaz Khan 2018 年 4 月 23 日
Can you please explain why did you use subs(X) instead of X?
Walter Roberson
Walter Roberson 2018 年 4 月 24 日

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.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeCreating, Deleting, and Querying Graphics Objects についてさらに検索

タグ

Community Treasure Hunt

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

Start Hunting!

Translated by