How can I display data with large absolute range in a 3D surface plot?

6 ビュー (過去 30 日間)
Bryan Cannon
Bryan Cannon 2019 年 6 月 11 日
コメント済み: Star Strider 2019 年 6 月 12 日
I've been trying to create a surface plot of data collected from a surface depth recording and am having trouble figuring out how to scale my Z data so it can fit on the plot. Not sure how to link the exact data (comes from an hd5 .datx file), but relevant info below:
  • The max range of my Z data is 1.7977e+308
  • x and y dimensions are a 1024 x 1024 meshgrid
[X, Y] = meshgrid(1:1024, 1:1024)
  • Attempting to run
surf(X, Y, Z)
  • I get a "Limits are too large" error
Any advice on what would be the best way to scale my Z data in order to dsipaly it on the surface plot? Thanks!

回答 (1 件)

Star Strider
Star Strider 2019 年 6 月 11 日
If all your Z data are greater than zero, taking the natural or base-10 logarithm could be an option, unless some other transformation is appropriate.
  2 件のコメント
Bryan Cannon
Bryan Cannon 2019 年 6 月 12 日
Mm I think I'd have to adjust the negative values I have. There seems to be an issue with the data conversion itself so I may need to figure out how to extract and convert the z data to a usable data type first. Appreciate the help!
Star Strider
Star Strider 2019 年 6 月 12 日
My pleasure!
One option is to simply divide them by a constant, perhaps 1E+100.
Another is to use a modified version of the tanh function to scale the amplitudes:
x = linspace(-1E+300, 1E+300, 10);
y = 1E+100*tanh(x/1E+300);
figure
plot(x, y)

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeSurface and Mesh Plots についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by