Assign discrete values to meshgrid elements
조회 수: 9 (최근 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!