插值Matlab色图

4
在Matlab中,使用预定义的色图,我希望将颜色三元组与范围[v_min,v_max]中的任何值相关联。
如何对此色图进行插值?
1个回答

5
以下代码可以实现。请注意,您需要将要绘制的变量从 [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)


3
在一个二维矩阵上,您可以使用interp1函数。每一列将被独立地插值。这实际上就是MATLAB中parula颜色映射的插值方式...因此,您只需执行cm_data = interp1(linspace(0,1,size(cmap,1)), hsv, val); 即可。 - rayryeng
@rayryeng 哦,天啊,我不知道! - Ander Biguri
没问题 :) 当我查看 parula.m 源代码时,我偶然发现了这个! - rayryeng

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接