【发布时间】:2015-10-13 18:33:33
【问题描述】:
在 Matlab 中,使用预定义的颜色图,我想将颜色三元组与 [v_min , v_max] 范围内的任何值相关联。
如何插入此颜色图?
【问题讨论】:
标签: matlab interpolation colormap
在 Matlab 中,使用预定义的颜色图,我想将颜色三元组与 [v_min , v_max] 范围内的任何值相关联。
如何插入此颜色图?
【问题讨论】:
标签: matlab interpolation colormap
下面的代码就可以了。请注意,您需要将绘制的变量从[vmin vmax] 缩放和偏移到[0 1]
val % Variable scaled correctly to the colormap scale (0-1).
hsv=rgb2hsv(cmap);
cm_data=interp1(linspace(0,1,size(cmap,1)),hsv,val);
cm_data=hsv2rgb(cm_data);
cm_data 应该有你正在寻找的三元组。代码取自here
注意:这将满足您的要求,但我不确定您是否要这样做。如果这是出于绘图目的,这是一个坏主意,因为颜色图需要随数据线性增加,而 MATLAB 的颜色绘图会假设它是。
如果您的目标是确保您有足够大的颜色图,请将val 更改为linspace(0,1,300)。
【讨论】:
interp1。每列将被独立插值。这实际上就是在 MATLAB 中插值 parula 颜色图的方式......所以你可以简单地做cm_data = interp1(linspace(0,1,size(cmap,1)), hsv, val);
parula.m 源时偶然发现了这一点!