Main Content

validatecolor

验证颜色值

自 R2020b 起

    说明

    示例

    RGB = validatecolor(colors) 验证单一颜色值。如果颜色值有效,validatecolor 返回该颜色的等效 RGB 三元组。validatecolor 检查的标准之一是指定了一种颜色还是多种颜色。对于此语法,指定多种颜色是无效的,并且会生成错误。

    示例

    RGB = validatecolor(colors,sz) 验证一种或多种颜色。将 sz 指定为 'one' 可验证一种颜色。指定 'multiple' 可验证多种颜色。

    示例

    全部折叠

    验证无符号 8 位颜色值。

    RGB = validatecolor(uint8([128 0 255]))
    RGB = 1×3
    
        0.5020         0    1.0000
    
    

    创建一个 2×3 矩阵,其中包含两种颜色的无符号 16 位值。然后验证这些颜色。

    c = uint16([32768 0 65535; 0 65535 0]);
    RGB = validatecolor(c,'multiple')
    RGB = 2×3
    
        0.5000         0    1.0000
             0    1.0000         0
    
    

    验证三种颜色名称。

    RGB = validatecolor({'red','green','blue'},'multiple')
    RGB = 3×3
    
         1     0     0
         0     1     0
         0     0     1
    
    

    验证三个十六进制颜色代码。

    RGB = validatecolor({'#8000FF','#0F0','#FF9900'},'multiple')
    RGB = 3×3
    
        0.5020         0    1.0000
             0    1.0000         0
        1.0000    0.6000         0
    
    

    定义一个名为 plotlines 的函数,该函数接受表示 y 坐标数组的 y 和表示线条颜色的 linecolors 作为输入。该函数创建一个 y 中的值的彩色线图。

    在该函数中,通过调用 validatecolor 函数来检查 linecolors 的有效性。指定 'multiple' 选项以允许用户指定一种或多种颜色。如果颜色无效,validatecolor 将显示一条错误消息。否则,它返回等效的 RGB 三元组数组。接下来,使用 RGB 数组的大小来确定线条之间的颜色分布。

    在一个可写文件夹中将函数另存为 plotlines.m

    function plotlines(y,linecolors)
    % Plot colored lines.
    p = plot(y);
    
    % Check for valid color values
    RGB = validatecolor(linecolors,'multiple');
    
    % Use RGB array in a calculation
    ncolors = size(RGB,1);
    nlines = numel(p);
    nupdate = min(ncolors,nlines);
    for n = 1:nupdate
        p(n).Color = RGB(n,:);
    end
    

    调用 plotlines 函数绘制一个红色线条、一个蓝色线条和一个黑色线条。

    plotlines([0 1 2; 1 2 3],{'red','blue','black'})

    现在用无效颜色值来调用函数。在本例中,指定标量值而不是 m×3 数组。MATLAB® 显示 validatecolor 函数返回的错误。

    plotlines([0 1 2; 1 2 3],255)
    Error using validatecolor (line 50)
    Specify colors as a three-column matrix.
    
    Error in plotlines (line 6)
    RGB = validatecolor(linecolors,'multiple');

    定义一个名为 plotminmax 的函数,该函数接受表示 y 坐标数组的 y 和表示颜色的可选参量 c 作为输入。该函数创建一个线图,并在 y 的最小值和最大值处绘制两条水平虚线。默认情况下,虚线为黑色,但用户可以使用 c 参量自定义颜色。

    arguments 代码块中,使用 validatecolor 函数检查 c 的有效性。将 'black' 定义为默认颜色,以便 c 可以是可选输入。然后,绘制 y,并使用颜色 c 在最小值和最大值处显示两条水平线。

    在一个可写文件夹中将函数另存为 plotminmax.m

    function plotminmax(y,c)
    % Plot lines with horizontal lines indicating min/max of y.
    arguments
        y {mustBeNumeric, mustBeNonempty}  
        c {validatecolor} = 'black'
    end
    
    plot(y)
    
    % Add min and max lines
    ymin = min(y,[],'all');
    ymax = max(y, [],'all');
    yline(ymin,'--','Color',c)
    yline(ymax,'--','Color',c)
    end

    用表示红色的十六进制颜色代码作为参数调用 plotminmax 函数。该函数绘制坐标并以指定的颜色显示水平线。

    plotminmax([8.4 2.5 7 3 9.2],'#FF0000')

    调用带无效颜色值的函数。在本例中,指定一个无效的颜色名称。MATLAB 显示 validatecolor 函数返回的错误。

    plotminmax([8.4 2.5 7 3 9.2],'chartreuse')
    Error using plotminmax
    Invalid argument at position 2. 'chartreuse' is not a valid 
    color specification. Valid names include: 'red', 'green', 
    'blue', 'cyan', 'magenta', 'yellow', 'black', and 'white'.
    Valid hexadecimal color codes consist of '#' followed by three 
    or six hexadecimal digits.

    输入参数

    全部折叠

    要验证的颜色值,指定为下列值之一:

    • 范围在 [0,1] 之间的 1×3 singledouble 值向量,其中的三个值分别对应于颜色的红、绿和蓝分量的强度。

    • 1×3 无符号整数向量,其中的三个整数分别对应于颜色的红、绿和蓝分量的强度。

    • singledouble 值或者无符号整数组成的 m×3 矩阵,矩阵中的每一行包含一种颜色的红、绿和蓝分量的强度。

    • 指定颜色名称(如 'red')或十六进制颜色代码(如 '#F92B30')的字符向量。

    • 字符向量一维元胞数组或字符串数组,其中数组中的每个元素或者是颜色名称(如 'red'),或者是十六进制颜色代码(如 '#F92B30')。

    下表列出了有效的颜色名称,及其等效的 RGB 三元组和十六进制颜色代码。

    颜色名称短名称RGB 三元组十六进制颜色代码外观
    "red""r"[1 0 0]"#FF0000"

    Sample of the color red

    "green""g"[0 1 0]"#00FF00"

    Sample of the color green

    "blue""b"[0 0 1]"#0000FF"

    Sample of the color blue

    "cyan" "c"[0 1 1]"#00FFFF"

    Sample of the color cyan

    "magenta""m"[1 0 1]"#FF00FF"

    Sample of the color magenta

    "yellow""y"[1 1 0]"#FFFF00"

    Sample of the color yellow

    "black""k"[0 0 0]"#000000"

    Sample of the color black

    "white""w"[1 1 1]"#FFFFFF"

    Sample of the color white

    示例: RGB = validatecolor(uint8([255 0 0]))

    示例: RGB = validatecolor("#FF8800")

    数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | char | string

    大小选项,指定为下列选项之一:

    • 'one' - 仅接受一个颜色值。否则返回错误。

    • 'multiple' - 接受一个或多个颜色值。

    示例: RGB = validatecolor(["red" "green"],'multiple')

    输出参量

    全部折叠

    等效的 RGB 值,以一个 RGB 三元组或由多个 RGB 三元组形成的 m×3 矩阵形式返回。RGB 三元组是包含三个元素的行向量,其元素分别指定颜色中红、绿、蓝分量的强度。颜色强度在范围 [0,1] 内。例如,[1 0 0] 是红色,[0.5 0.5 0.5] 是灰色中间色调。

    版本历史记录

    在 R2020b 中推出