How to plot a function with different values

84 Ansichten (letzte 30 Tage)
Raz Omar
Raz Omar am 24 Nov. 2019
Kommentiert: TADA am 29 Okt. 2020
(M)/1+.5*exp(-k*M*t)*(M-2)
this is the funtuion I want to plot with diffrent M values M= [1,3,5]
clear all
M= 1;
k=0.1;
t=[0:24];
SS= (M)/1+.5*exp(-k*M*t)*(M-2);
plot(SS,'r-');
xlabel('Time IN [SEC]');
ylabel('S');
title('S vs Time')
legend('M1');
I only managed to plot it once with M1
how can I plot it it with 3 lines in one plot command ?
  1 Kommentar
Rik
Rik am 24 Nov. 2019
Have you read the documentation for plot? It contains examples of how you van plot multiple lines at the same time. Your label is also incorrect: you aren't actually plotting against time, you're plotting against the element index.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

TADA
TADA am 24 Nov. 2019
Bearbeitet: TADA am 24 Nov. 2019
You can make M a column vector, then calculate S as a matrix
then if you plot it against t which is a row vector plot should treat each row of S as a separate series
M= [1;3;5];
k=0.1;
t=[0:24];
SS= (M)/1+.5*exp(-k*M*t).*(M-2);
plot(t, SS, '-');
legend(strcat('M', num2str(M)));
another approach would be to plot in a loop and use hold on:
for M = [1,3,5]
SS = (M)/1+.5*exp(-k*M*t)*(M-2);
plot(t, SS, '-', 'DisplayName', ['M' num2str(M)]);
hold on;
end
hold off;
legend show;
  2 Kommentare
Ana Venerio
Ana Venerio am 29 Okt. 2020
Thank you so much, this was so helpful :)
TADA
TADA am 29 Okt. 2020
Cheers!

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (2)

Pavel Osipov
Pavel Osipov am 24 Nov. 2019
Is exp(-k*M*t)*(M-2) matrix multiplication? Or exp(-k*M*t)*(M-2) element by element?
If element by element:
clear all
M = [1;3;5];%3x1 double
k=0.1;
t=0:24;%1x25 double
Wrk=M.*t;%3x25 double
Wrk1=exp(-k*Wrk);%3x25 double
Wrk2=M+0.5*Wrk1;%3x25 double
M2=M-2;%3x1 double
MM2=repmat(M2,1,length(t));%3x25 double
SS= Wrk2.*MM2;%[%%3x25 double]x[%3x25 double] element by element
figure('color','w')
plot(t,SS(1,:),'r-',t,SS(2,:),'g-',t,SS(3,:),'b-');
grid on;
xlabel('Time IN [SEC]');
ylabel('S');
title('S vs Time')
legend('M1','M2','M1');Wrk.JPG
  1 Kommentar
Raz Omar
Raz Omar am 24 Nov. 2019
Bearbeitet: Raz Omar am 24 Nov. 2019
Thnkas for the answer , I think it's not element by element as you said , you have used codes outside of my course , thanks for the new info

Melden Sie sich an, um zu kommentieren.


Pavel Osipov
Pavel Osipov am 24 Nov. 2019
If M2xWrk2 is matrix mult:
%MyAnswer1.m
%If M2xWrk2 is matrix mult
clear all
M = [1;3;5];%3x1 double
k=0.1;
t=0:24;%1x25 double
Wrk=M.*t;%3x25 double
Wrk1=exp(-k*Wrk);%3x25 double
Wrk2=M+0.5*Wrk1;%3x25 double
M2=M-2;%3x1 double
%If M2xWrk2 is matrix mult
MM2=M2';%3x25 double
% --------------------------------------------------------------------------------------------------------
%[%%1x3 * 3x25 ] double matrix product => "String x Column and Sum"
SS= MM2*Wrk2;
% --------------------------------------------------------------------------------------------------------
figure('color','w')
plot(t,SS,'b-','linewidth',2);
grid on;
xlabel('Time IN [SEC]');
ylabel('S');
title('S vs Time')
legend('M1');
Wrk1.JPG

Community Treasure Hunt

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

Start Hunting!

Translated by