Why do i get a blank graph?

jpmontoya

jpmontoya (view profile)

님이 질문을 제출함. 1 Jun 2019
최근 활동 jpmontoya

jpmontoya (view profile)

님이 댓글을 추가함. 2 Jun 2019
gonzalo Mier

gonzalo Mier (view profile)

님이 답변을 채택함.
Hello, as you can see in the code below I am trying to make two plots but the problem is that the subplot (2,1,2) goes blank. I got nothing. I think maybe there is something wrong with the variables k1 and v1 since they depend on X(1) and X(3) which come from the solution of an ODE. Can somebody help me? Thanks in advance. function [T,X] = call_osc()
tspan = [0 2000];
x1_0=0.05;
x2_0=0.05;
x3_0=298.15;
x4_0=0.1;
odeset('RelTol', 1e-10, 'AbsTol', 1e-12);
[T,X]=ode15s(@osc,tspan,[x1_0 x2_0 x3_0 x4_0]);
R=8.314;
Ea1=80000;
alpha=11;
A=1;
k1= 0.8*exp(-Ea1/(alpha*R*X(3)));
v1=k1*A*X(1);
subplot(2,1,1)
plot(T,X(:,3))
grid on
xlabel('tiempo(s)','Fontsize',13,'FontWeight','Bold')
ylabel('Temperatura (K)','Fontsize',13,'FontWeight','Bold')
subplot(2,1,2)
plot(X(:,1),v1)
grid on
end

Walter Roberson

Walter Roberson (view profile)

2 Jun 2019
It would help to have your osc function

로그인 to comment.

답변 수: 1

gonzalo Mier

님의 답변 2 Jun 2019
gonzalo Mier

gonzalo Mier (view profile)

님이 편집함. 2 Jun 2019
채택된 답변

You are computing v1 as
k1= 0.8*exp(-Ea1/(alpha*R*X(3)));
v1=k1*A*X(1);
v1 is a matriz of size 1x1. So when you do plot( "vector of size 1xn" , "cte" ) the output is an empty plot.
Check if the way to compute v1 is correct or you have to use X(:,1).
PD: You also can check this doing:
plot(X(:,1),v1,'*')

jpmontoya

jpmontoya (view profile)

2 Jun 2019
Gonzalo, I checked by doing:
plot(X(:,1),v1
And I got something like this: As you can see all of the values of v1 are zero but they shouldn't be.
Walter Roberson

Walter Roberson (view profile)

2 Jun 2019
tspan = [0 2000];
[T,X]=ode15s(@osc,tspan,[x1_0 x2_0 x3_0 x4_0]);
X will be output as something with an unpredictable number of rows, and 4 columns.
k1= 0.8*exp(-Ea1/(alpha*R*X(3)));
v1=k1*A*X(1);
X is a 2D array. X(1) and X(3) are linear indexing, so X(3) is X(3,1) ans X(1) is X(1,1) . X(1,1) should be the same as x1_0 but X(3,1) will be the x1 output at the third time point, whatever the third time point happens to be.
jpmontoya

jpmontoya (view profile)

2 Jun 2019
Thank you so much. I did a lot of things considering the answers of Gonzalo and Walter and finally everything works perfect.

로그인 to comment.