【问题标题】:Interpolating a matlab colormap插值 matlab 颜色图
【发布时间】:2015-10-13 18:33:33
【问题描述】:

在 Matlab 中,使用预定义的颜色图,我想将颜色三元组与 [v_min , v_max] 范围内的任何值相关联。

如何插入此颜色图?

【问题讨论】:

    标签: matlab interpolation colormap


    【解决方案1】:

    下面的代码就可以了。请注意,您需要将绘制的变量从[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);
    • @rayryeng 哦,天哪,我不知道!
    • 没问题 :) 我在查看parula.m 源时偶然发现了这一点!
    猜你喜欢
    • 1970-01-01
    • 2014-07-02
    • 2012-04-03
    • 1970-01-01
    • 2017-09-21
    • 2011-04-05
    • 2016-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多