在Matlab中,使用预定义的色图,我希望将颜色三元组与范围[v_min,v_max]中的任何值相关联。
如何对此色图进行插值?
如何对此色图进行插值?
[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
应该有你要找的三元组。代码取自这里
注意:这将按照你的要求进行操作,但我不确定你是否想这样做。如果这是为了绘图目的,那么这是一个坏主意,因为颜色映射需要与数据线性增加,而MATLAB的颜色绘图将假定它是线性的。
如果你的目标是确保有足够大的颜色映射,则将val
更改为linspace(0,1,300)
。
interp1
函数。每一列将被独立地插值。这实际上就是MATLAB中parula颜色映射的插值方式...因此,您只需执行cm_data = interp1(linspace(0,1,size(cmap,1)), hsv, val);
即可。 - rayryengparula.m
源代码时,我偶然发现了这个! - rayryeng