validatecolor
说明
示例
验证无符号 8 位颜色
验证多种无符号 16 位颜色
创建一个 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({'#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.
输入参数
colors
— 颜色值
1×3 向量 | m×3 矩阵 | 字符向量 | 字符向量元胞数组 | 字符串数组
要验证的颜色值,指定为下列值之一:
范围在
[0,1]
之间的 1×3single
或double
值向量,其中的三个值分别对应于颜色的红、绿和蓝分量的强度。1×3 无符号整数向量,其中的三个整数分别对应于颜色的红、绿和蓝分量的强度。
由
single
或double
值或者无符号整数组成的 m×3 矩阵,矩阵中的每一行包含一种颜色的红、绿和蓝分量的强度。指定颜色名称(如
'red'
)或十六进制颜色代码(如'#F92B30'
)的字符向量。字符向量一维元胞数组或字符串数组,其中数组中的每个元素或者是颜色名称(如
'red'
),或者是十六进制颜色代码(如'#F92B30'
)。
下表列出了有效的颜色名称,及其等效的 RGB 三元组和十六进制颜色代码。
颜色名称 | 短名称 | RGB 三元组 | 十六进制颜色代码 | 外观 |
---|---|---|---|---|
"red" | "r" | [1 0 0] | "#FF0000" | |
"green" | "g" | [0 1 0] | "#00FF00" | |
"blue" | "b" | [0 0 1] | "#0000FF" | |
"cyan" | "c" | [0 1 1] | "#00FFFF" | |
"magenta" | "m" | [1 0 1] | "#FF00FF" | |
"yellow" | "y" | [1 1 0] | "#FFFF00" | |
"black" | "k" | [0 0 0] | "#000000" | |
"white" | "w" | [1 1 1] | "#FFFFFF" |
示例: RGB = validatecolor(uint8([255 0 0]))
示例: RGB = validatecolor("#FF8800")
数据类型: single
| double
| int8
| int16
| int32
| int64
| uint8
| uint16
| uint32
| uint64
| char
| string
sz
— 大小选项
'one'
(默认) | 'multiple'
大小选项,指定为下列选项之一:
'one'
- 仅接受一个颜色值。否则返回错误。'multiple'
- 接受一个或多个颜色值。
示例: RGB = validatecolor(["red" "green"],'multiple')
输出参数
RGB
— RGB 值
RGB 三元组 | RGB 三元组矩阵
等效的 RGB 值,以一个 RGB 三元组或由多个 RGB 三元组形成的 m×3 矩阵形式返回。RGB 三元组是包含三个元素的行向量,其元素分别指定颜色中红、绿、蓝分量的强度。颜色强度在范围 [0,1]
内。例如,[1 0 0]
是红色,[0.5 0.5 0.5]
是灰色中间色调。
版本历史记录
在 R2020b 中推出
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)