How to make a contour plot with incomplete z data?

조회 수: 17 (최근 30일)
Onur Kucuktas
Onur Kucuktas 2021년 11월 5일
편집: Chris 2021년 11월 6일
I have a collection of intersection points of a square plane. Each intersection point has an intensity associated with it (doing light ray tracing). I need the intensity to be the elevation of the contour plot, and the points to be the x and y respectively. Areas not intersected by any rays need to have an elevation of zero. I have a vector that has x values of intersection, a vector that has y values of intersection, and a vector that has intensities. I'm not sure how to make a contour plot using this information. Using the contourf function with those vectors as an input says that Z must be at least a 2x2 matrix, and I don't know how to form this matrix when basically any point that isn't included needs to have an elevation of 0. Any guidance is appreciated!

답변 (1개)

Chris
Chris 2021년 11월 5일
편집: Chris 2021년 11월 6일
As far as I understand, you'll need a rectangular array representing the grid of intensity values. If your grid is square and your vector contains all the points, that could be as simple as a reshape() operation. Adapting the first example from the contour documentation, you can either set all the zero points to NaN or to 0, to different effect:
xvec = linspace(-2*pi,2*pi);
yvec = linspace(0,4*pi);
[X,Y] = meshgrid(xvec,yvec);
Z = sin(X)+cos(Y);
Z(randi(100,50,1),randi(100,50,1)) = 0;
contourf(X,Y,Z)
Z(Z==0) = nan;
contourf(X,Y,Z)
In this example the contours ignore the NaNs. In the previous, they drop to zero.
Does that help, or does it need more clarification?

카테고리

Help CenterFile Exchange에서 Contour Plots에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by