Assign discrete values to meshgrid elements
8 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Ritwik Rakshit
am 12 Feb. 2019
Kommentiert: Walter Roberson
am 12 Feb. 2019
I have a system of differential equations that takes in a pair of scalars (say C and D) and outputs a scalar E after evaluating the system numerically. I'm able to generate multiple E-values for an array of C- and D-values by using nested for loops. How can I plot the resulting values as a surface against a grid of the independent variables, rather than as a 3D scatter plot?
E is essentially a function of C and D, but cannot be expressed in closed form and must be evaluated numerically.
for i=1:n
C=0.1*i;
for j=1:n
D=0.01*j;
while ti<to
[t, y]=ode23(@myFunction, [ti to], [0; 0; 0]);
E(i,j)=y(end, 2);
end
end
end
% The following code will work, but the axes won't be oriented correctly
[C,D]=meshgrid(0:0.1:0.1*n,0:0.01:0.01*n);
surf(C,D,E);
0 Kommentare
Akzeptierte Antwort
Walter Roberson
am 12 Feb. 2019
Switch to surf(C, D, E.') or else change meshgrid to ndgrid()
2 Kommentare
Walter Roberson
am 12 Feb. 2019
The syntax is surf(X, Y, Z) , and all three matrices must be the same size. But in MATLAB X is the rows and Y is the columns .
[C, D] = meshgrid( 1:M, 1:N)
gives C as being N x M but
for i : M
for j = 1 : N
E(i, j) = something
end
end
gives E as M x N.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Surface and Mesh Plots 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!