Assign discrete values to meshgrid elements
12 次查看(过去 30 天)
显示 更早的评论
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 个评论
采纳的回答
Walter Roberson
2019-2-12
Switch to surf(C, D, E.') or else change meshgrid to ndgrid()
2 个评论
Walter Roberson
2019-2-12
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.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Surface and Mesh Plots 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!