0

使用 Matlab 中的函数 imagesc,我绘制了我的 (X,Y,Z) 数据-X 数组距离、Y 数组时间和我的数据 Z = Z(X,Y) 一个矩阵。

我注意到 80% 的图像只有一种颜色,因为几乎所有 Y 的 Z 数据的变化只发生在 X 的末尾。

现在我使用 colormap('hsv') 这给了我认为最大范围的不同颜色。

我需要将颜色条范围更改为对数范围,以改善输出数据沿距离 X 随时间变化的范围。

我也使用过contourf,但我仍然不确定使用这个函数是否会更好,而不是输出更平滑的imagesc。

拜托,任何想法、任何方法或任何小脚本,我都可以使用 imagesc 或其他内置函数来直观地显示 2D 中对数刻度的数据差异,非常受欢迎!谢谢你

4

1 回答 1

0

Mathworks 网站上有一个讨论,其中有人提供了一个对数彩条的函数。

https://www.mathworks.com/matlabcentral/newsreader/view_thread/152310

编辑:从链接复制和粘贴代码

function cbar = colorbar_log(my_clim)
%COLORBAR_LOG Apply log10 scaling to pseudocolor axis 
% and display colorbar COLORBAR_LOG(V), where V is the
% two element vector [cmin cmax], sets manual, logarithmic
% scaling of pseudocolor for the SURFACE and PATCH
% objects. cmin and cmax should be specified on a LINEAR
% scale, and are assigned to the first and last colors in
% the current colormap. A logarithmic scale is computed,
% then applied, and a colorbar is appended to the current
% axis.
%
% Written by Matthew Crema - 7/2007

% Trick MATLAB by first applying pseudocolor axis
% on a linear scale
caxis(my_clim)

% Create a colorbar with log scale
cbar = colorbar('Yscale', 'log');

% Now change the pseudocolor axis to a log scale.
caxis(log10(my_clim));

% Do not issue the COLORBAR command again! If you want to
% change things, issue COLORBAR_LOG again.
于 2015-11-09T02:35:57.800 回答