如何将颜色名称转换为 3 元素 RGB 向量?
在许多 MATLAB 绘图函数中,您可以将颜色指定为字符串或直接列出红色、绿色和蓝色值的三元素向量。
例如,这两个语句是等效的:
plot(x, y, 'Color', 'r');
plot(x, y, 'Color', [1 0 0]);
字符串值可以指定 8 种颜色:'r','g','b','c','m','y',' k','w'
。是否有 MATLAB 内置函数可以将这些字符串转换为等效的 RGB 向量?
In many MATLAB plotting functions, you can specify the color as either a string or as a 3 element vector that directly lists the red, green, and blue values.
For instance, these two statements are equivalent:
plot(x, y, 'Color', 'r');
plot(x, y, 'Color', [1 0 0]);
There are 8 colors that can be specified by a string value: 'r','g','b','c','m','y','k','w'
. Is there a MATLAB built-in function that converts these strings to an equivalent RGB vector?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
我在 MathWorks File Exchange 上找到了这个通用替代方案,它甚至可以处理默认值以外的颜色字符串MATLAB 中的 8:
如果您只关心默认 8 种颜色字符串的转换,这是我自己编写的一个函数我用来在 RGB 三元组和短颜色名称(即单个字符)之间来回转换:
请注意,此函数允许您输入字符串或 N×3 数字或逻辑值数组(RGB 值从 0 到 1 或 0 到 255),它返回相反的颜色表示。它还使用函数 ISMEMBER 进行转换。
I found this general alternative on the MathWorks File Exchange which will even handle color strings other than the default 8 in MATLAB:
If you're only concerned with conversions for the default 8 color strings, here's a function I wrote myself that I use to convert back and forth between RGB triples and short color names (i.e. single characters):
Note that this function allows you to input either a string of characters or an N-by-3 numeric or logical array (with RGB values from 0 to 1 or 0 to 255) and it returns the opposite color representation. It also uses the function ISMEMBER to do the conversions.
我认为matlab中没有这样的函数。我建议你使用 Marcs 函数,或者这个单行代码。
I don't think there is a function for this in matlab. I suggest you use Marcs function, or this one-liner.
万一没有,我就一起黑了一个
In case there isn't, I just hacked one together
从 R2020b 开始,您可以使用
validatecolor
这。Since R2020b you can use
validatecolor
for this.这里有一个你不必解决 C 语言的问题:
现在
str2rgb
给你答案。例如str2rgb('c') = [0 1 1]
。here's a oneliner you don't have to solve for C:
Now
str2rgb
gives you the answer. for examplestr2rgb('c') = [0 1 1]
.没有 MATLAB 内置函数可以转换
'r','g','b','c','m','y','k','w'
到相应的 RGB 颜色,因为所有这些情况众所周知都是基本颜色。每个混合基本颜色的人都应该随时了解其中的每一种颜色。
在任何情况下,使用以下值构建表格或定义常量可能会很有用:
1.- 主加色
红色 绿色 蓝色
2.- 主减色
青色 洋红色黄色
3.- 黑色:没有任何颜色
4.- 白色:所有颜色
请注意,在 MATLAB 中,命令
plot
需要字段范围为
输入。[0 1]
的“颜色”因此,无论使用什么值
[0 255]
,都将它们除以255
来绘制自定义颜色。There's no MATLAB built-in function to convert
'r','g','b','c','m','y','k','w'
to the respective RGB colours because all these cases are well known to be BASIC colours.Every one blending BASIC colours should know each and all of them, at all times.
In any case it may be useful to build a table or define constants using the following values:
1.- Primary additive colours
red green blue
2.- Primary subtractive colours
cyan magenta yellow
3.- black : absence of any colour
4.- white : all colours
Note that in MATLAB the command
plot
requires field'Color'
input with range[0 1]
.so whatever values
[0 255]
used divide them by255
to plot custom colours.