使用colormap和flipud的MATLAB意外行为

时间:2018-01-06 23:21:31

标签: matlab colormap flipud

我试图通过调用' flipud'来反转色彩图(改变正/负颜色方向):

colormap(flipud(hot)); % flips color map
colormap(flipud('hot')); % no effect

我没想到这个结果。为了澄清,这是因为对flip的内部调用是翻转字符串(产生相同的字符串)并加载之前的相同颜色映射?如果没有引号,它会翻转实际的颜色值矩阵?

1 个答案:

答案 0 :(得分:2)

hot是一个返回色图矩阵的函数:

hot()

ans =

    0.0416666666666667  0  0
    0.0833333333333333  0  0
                 0.125  0  0

因此,在第一种情况下,您正在翻转矩阵。在第二种情况下,正如您所说的那样,您正在尝试翻转字符数组'hot'并从中构建颜色图。

超出此行为的根本原因是,在Matlab中没有参数的函数可以在不使用括号的情况下调用。你认为pi是一个数值常数吗?错了,pi是一个内置函数。在你的控制台中试试这个:

pi

ans =

      3.14159265358979

pi()

ans =

      3.14159265358979

另一种选择,虽然我没有看到使用它的重点,除非你正在使用用户输入或类似的东西,将按如下方式编写你的电话:

text = 'hot';
colormap(flipud(eval(text)));