I am getting Vectors must be the same length error when I tried to plot. I have attached the full Matlab-files.
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Dereje
am 8 Feb. 2018
Kommentiert: Walter Roberson
am 8 Feb. 2018
zspan=[0,400];
w0=0.1;
b=1;
gmark=1;
y0=[b*b*w0; b*b*w0*w0; b*b*w0*gmark];% Initial values
options=odeset('RelTol',1e-6,'AbsTol',1e-6,'Events',@stopevents);
sol=ode45(@rhs,zspan, y0,options);
sol.mssflx=sol.y(1,:);
sol.vel=sol.y(2,:)./sol.mssflx;
sol.gmark=sol.y(3,:)./sol.mssflx;
sol.b=sqrt(sol.mssflx./sol.vel);
sol.mntflx=sol.mssflx.*sol.vel;
sol.bncyflx=sol.mssflx.*sol.gmark;
figure(1)
plot(sol.vel,zspan)
%%%%%
function dy=rhs(z,y)
% Calculate rho and N2(z)
[rho, Nsqr]=density1(z);
% Calculate entrainment
alpha=0.116;
massflux=y(1);
velocity=y(2)/massflux;
gmark=y(3)/massflux;
fric= 1*velocity*abs(velocity);
b=sqrt(massflux/velocity);
dy(1)=2*alpha*b*velocity;
dy(2)=b*b*gmark- fric;
dy(3)=-massflux*Nsqr;
dy=dy';
end
0 Kommentare
Akzeptierte Antwort
Matt J
am 8 Feb. 2018
Bearbeitet: Matt J
am 8 Feb. 2018
In,
plot(sol.vel,zspan)
zspan only has two numbers in it. sol.vel has more. So, they cannot be sensibly plotted together.
4 Kommentare
Walter Roberson
am 8 Feb. 2018
stopevents needs to return a numeric value, not a logical. Confusingly, the numeric value should be less than or equal to 0 to signal continuation, and greater than 0 to signal termination.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Ordinary Differential Equations finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!