How to make a contour plot with incomplete z data?
8 ビュー (過去 30 日間)
古いコメントを表示
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!
0 件のコメント
回答 (1 件)
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 Center および File Exchange で Contour Plots についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!