Plot u vs. t with PDEPE. "Index exceeds matrix dimensions."
Show older comments
Hello,
I can't seem to figure out how to plot u (concentration) vs. t (time) at a specific x (distance).
function simple_time_dependent_pdepe
clear all; close all; clc;
%
D_ij = 1*10^-6; %Diffusion coefficient D (3.0*10^-7 cm^2/s -> 30 um^2/s)
L0 = 1; %c0 [nM]
x_f =0.02; %Length of domain [um]
maxt = 10; %Max simulation time [s]
%
m = 0; %Parameter corresponding to the symmetry of the problem
x = linspace(0,x_f,100); %xmesh
t = linspace(0,maxt,100); %tspan
%
sol = pdepe(m,@DiffusionPDEfun,@DiffusionICfun,@DiffusionBCfun,x,t,[]);
u = sol;
%
% Plotting
plot(t,sol(:,500),'LineWidth',2)
function [c,f,s] = DiffusionPDEfun(x,t,u,dudx)
D = D_ij;
%
%Rate constants
k_1 = 0.25;
R_L = -k_1.*u;
%
% PDE
c = 1;
f = D_ij.*dudx;
s = R_L;
end
%
function u0 = DiffusionICfun(x)
u0 = 0;
end
%
function [pl,ql,pr,qr] = DiffusionBCfun(xl,ul,xr,ur,t)
c0 = L0;
pl = ul-c0;
ql = 0;
pr = 0;
qr = 1;
end
end
I tried using
plot(t,sol(:,500),'LineWidth',2)
However, I get the error "Index exceeds matrix dimensions."
Am I missing something?
7 Comments
Dennis
on 10 Aug 2018
What is size(sol) ?
KSSV
on 10 Aug 2018
Code works fine in my version...
Dennis
on 10 Aug 2018
The code does not contain the line that throws that error :)
Jennifer Yang
on 10 Aug 2018
Bill Greene
on 11 Aug 2018
sol has a size of only 100x100 and you are trying to reference column 500. The error message seems very clear to me so am puzzled why a posting here is needed to solve this.
Jennifer Yang
on 15 Aug 2018
Torsten
on 16 Aug 2018
plot (t,sol(:,100,1))
plots the solution over time at x(100), e.g.
Does that help ?
Best wishes
Torsten.
Answers (0)
Categories
Find more on Mathematics 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!