How do I add a legend to my plot?
現在この質問をフォロー中です
- フォローしているコンテンツ フィードに更新が表示されます。
- コミュニケーション基本設定に応じて電子メールを受け取ることができます。
エラーが発生しました
ページに変更が加えられたため、アクションを完了できません。ページを再度読み込み、更新された状態を確認してください。
古いコメントを表示
%Define the variables using syms - syms creates symbolic variables
syms y(t) y0
%define the ordinary differential equation
ode = diff(y,t) == cos(t^2);
%solve the differential equation using dsolve
ysol = dsolve(ode,y(0)==y0);
%Create a figure called Task 1
figure ('Name','Task 1')
%Pick 3 different initial conditions for which the solution exists
%Conditions are the y values (y values are 1, 1.5, and 3 at varying t
%values. See the t values below.
conds = [1 1.5 3]'; %some values of y0
f = matlabFunction(subs(ysol,y0,conds));
t = linspace(0,50);
y = f(t);
%plotting the 3 equations
plot(t,y,'linewidth',2)
title('Symbolic Solutions')
xlabel('t')
ylabel('y(t)')
grid on
採用された回答
Star Strider
2019 年 7 月 31 日
To add the legend, either use sprintfc (undocumented although quite useful):
lgndc = sprintfc('IC = %.1f',conds);
legend(lgndc, 'Location','E')
lgndc = compose('IC = %.1f',conds);
legend(lgndc, 'Location','E')
both produce the same result.
Put these lines after your ‘grid on’ call.
14 件のコメント
Vincenzo Dragone
2019 年 7 月 31 日
For some reason this isn't working in my code...I replaced the IC with my initial condition y(0)...
Star Strider
2019 年 7 月 31 日
What does ‘not working’ mean?
I copied your code exactly and added only those two lines. (I am running R2019a.)
%Define the variables using syms - syms creates symbolic variables
syms y(t) y0
%define the ordinary differential equation
ode = diff(y,t) == cos(t^2);
%solve the differential equation using dsolve
ysol = dsolve(ode,y(0)==y0);
%Create a figure called Task 1
figure ('Name','Task 1')
%Pick 3 different initial conditions for which the solution exists
%Conditions are the y values (y values are 1, 1.5, and 3 at varying t
%values. See the t values below.
conds = [1 1.5 3]'; %some values of y0
f = matlabFunction(subs(ysol,y0,conds));
t = linspace(0,50);
y = f(t);
%plotting the 3 equations
plot(t,y,'linewidth',2)
title('Symbolic Solutions')
xlabel('t')
ylabel('y(t)')
grid on
lgndc = sprintfc('IC = %.1f',conds);
legend(lgndc, 'Location','E')
Vincenzo Dragone
2019 年 7 月 31 日
I am running R2018b which is why I think it's a problem.
It keeps giving me the following error.
Unable to use a value of type 'cell' as an index.
Error in Untitled3 (line 23)
legend(lgndc, 'Location','E')
Star Strider
2019 年 7 月 31 日
Running R2018b is not the problem.
In your Command Window, type:
which('legend','-all')
and post all the results in a Comment here.
The only results should be something like:
C:\Program Files\MATLAB\R2019a\toolbox\matlab\scribe\legend.p
C:\Program Files\MATLAB\R2019a\toolbox\matlab\scribe\legend.m % Shadowed
I suspect you will have more outputs than that, and the extra outputs should direct you to finding the problem.
Vincenzo Dragone
2019 年 7 月 31 日
I downloaded the R2019a version to my computer and got it to work. Thank you!
Star Strider
2019 年 7 月 31 日
My pleasure.
If my Answer helped you solve your problem, please Accept it!
Vincenzo Dragone
2019 年 7 月 31 日
I'm trying to accept, but I don't see where the button is???
Star Strider
2019 年 7 月 31 日
It should be something like this:

Thank you!
Rena Berman
2019 年 7 月 31 日
編集済み: Rena Berman
2019 年 7 月 31 日
(Answers dev) Vincenzo, I have accepted the answer for you. Were you logged in when you couldn't see the button? What commands do you have available to you under Star Strider's picture (which is just to the left of his answer?) For example:

If you are logged in, you should be able to see an accept/unaccept option right under the vote/unvote command. This is in addition to the "Accept this answer" button that Star Strider mentions above.
Vincenzo Dragone
2019 年 7 月 31 日
Hi Rena,
Yes, I am logged into my account. But the accept/unaccept option was not popping up. I saw it last night, forgot to hit it, but then this morning I couldn't find it.
The commands under Star Strider's picture are Vote, Flag, and Link. That's all.
Rena Berman
2019 年 7 月 31 日
(Answers dev) Thanks for the quick reply! I'll look in to it.
Star Strider
2019 年 7 月 31 日
Thank you both!
Vincenzo Dragone
2019 年 7 月 31 日
Star Strider,
Would you be able to help me with another question?
Using Euler's Method, I need to approximate the solution to the IVP over some t range which I get to choose and then plot it.
My initial condition is y(0)=1 like in Task 1 code.
Here is all the code I have so far.
%% Task 1: Solve the ODE using the Symbolic Math Package and dsolve()
%Define the variables using syms - syms creates symbolic variables
syms y(t) y0 y1 h ode y2
%define the ordinary differential equation
ode = diff(y,t) == cos(t^2);
%solve the differential equation using dsolve
ysol = dsolve(ode,y(0)==y0);
%Create a figure called Task 1
figure ('Name','Task 1')
%Pick 3 different initial conditions for which the solution exists
%Conditions are the y values (y values are 1, 1.5, and 3 at varying t
%values. See the t values below.
conds = [1 1.5 2]'; %some values of y0
f = matlabFunction(subs(ysol,y0,conds));
t = linspace(0,5);
y = f(t);
%plotting the 3 equations
plot(t,y,'linewidth',2)
title('Symbolic Solutions')
xlabel('t')
ylabel('y(t)')
grid on
lgndc = sprintfc('IC = %.1f',conds);
legend(lgndc, 'Location','E')
%% Task 2: Euler's Method
%Pick a single initial condition from Task 1
%The initial condition we will use is y(0)=1
%Use Euler's method to approximate the solution to this IVP over some t
%range which you choose
%Create a figure called Task 2
figure ('Name','Task 2')
%The range of t is from 0 to 1
%We are using the initial condition that y(0)=1, but we want to know y(t)
%when t=1
%In other words we want to find y(1)
y = y0;
yout = y;
t0 = 0;
h = 0.5;
tfinal = 50;
for t= t0 : h : tfinal-h
y = y + h*ode;
yout = [yout;y]
end
Star Strider
2019 年 7 月 31 日
Jim Riggs already appears to have answered that to your satisfaction: How do you use Euler's Method to approximate the solution?
I doubt that I could improve on his Answer:.
その他の回答 (0 件)
カテゴリ
ヘルプ センター および File Exchange で Symbolic Math Toolbox についてさらに検索
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
