I am getting Vectors must be the same length error when I tried to plot. I have attached the full Matlab-files.
1 view (last 30 days)
Show older comments
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 Comments
Accepted Answer
Matt J
on 8 Feb 2018
Edited: Matt J
on 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 Comments
Walter Roberson
on 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.
More Answers (0)
See Also
Categories
Find more on Ordinary Differential Equations in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!