Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Matlab中绘制CIE 1931颜色空间中的颜色?_Matlab_Plot_Colors_Scatter Plot_Color Space - Fatal编程技术网

如何在Matlab中绘制CIE 1931颜色空间中的颜色?

如何在Matlab中绘制CIE 1931颜色空间中的颜色?,matlab,plot,colors,scatter-plot,color-space,Matlab,Plot,Colors,Scatter Plot,Color Space,我试图在已经绘制的CIE 1931颜色空间上绘制一些颜色值(坐标)。我已经导出了要绘制的XYZ颜色值,表示为[X,Y,Z]- [50,57,10] [36,43,15] [28,36,8] [25,32,14] I使用此函数绘制整个CIE颜色空间- 我使用了以下两个公式来计算上述代码中使用的x和y值,以绘制2种颜色为例,它生成了所示的图形/图表。这两种颜色中有一种超出了所需的光谱范围。我搞不清楚如何在显示的CIE颜色空间上绘制坐标z可以计算为z=1-x-y,以便所有颜色都适合光谱 正如所指

我试图在已经绘制的CIE 1931颜色空间上绘制一些颜色值(坐标)。我已经导出了要绘制的XYZ颜色值,表示为
[X,Y,Z]
-

[50,57,10]
[36,43,15]
[28,36,8]
[25,32,14]

I使用此函数绘制整个CIE颜色空间-

我使用了以下两个公式来计算上述代码中使用的
x
y
值,以绘制2种颜色为例,它生成了所示的图形/图表。这两种颜色中有一种超出了所需的光谱范围。我搞不清楚如何在显示的CIE颜色空间上绘制坐标
z
可以计算为
z=1-x-y
,以便所有颜色都适合光谱

正如所指出的,错误在于我在MATLAB外部进行的颜色转换(RGB到XYZ到xyY)。在纠正错误时,以下代码产生了所需的结果

cieplot();
hold on
x=[0.42 0.38 0.388 0.352 0.344 0.281]
y=[0.48 0.45 0.5 0.45 0.452 0.352];
scatter(x,y,10,'filled');
i=1;
a=[1 2 3 4 5 6];
strValues = strtrim(cellstr(num2str(a(:),'(%d)')));
text(x,y,strValues,'VerticalAlignment','bottom');
hold off
该图显示了在CIE 1931颜色空间中根据其
x
y
值绘制的六种颜色。

我不明白你在问什么。色度图为
x vs.y
。如何准确地合并
z
值以及为什么?你到底想做什么?我只是想在CIE 1931颜色空间上绘制由
[X,Y,Z]
定义的颜色。颜色不能仅用
x
y
表示。我试图用matlab来计算颜色是如何在这样的颜色空间中绘制的。有关更多详细信息,请参阅:@horchler我有一个列表,其中列出了我想根据其在CIE颜色空间中的绘图进行关联的几种颜色,即如果它们是n种颜色
[c1,c2,c3…cn]
如何连接(如果它们在图形中线性增加,循环增加)。颜色可以用
x
y
表示,因此,这被称为图表(也称为颜色空间)。看起来您正在尝试绘制颜色和亮度的三维空间(其中
Y
是CIE 1931的亮度)。使用
rgb2xyz
,我看不出您是如何获得这些特定的xy值的。请编辑您的问题,以显示完整的可运行代码,以及如何从RGB三元组转换为XYZ三元组再转换为xyY三元组。我以为您需要三维绘图?Y在代码中的什么位置?
cieplot();
hold on
x=[0.42 0.38 0.388 0.352 0.344 0.281]
y=[0.48 0.45 0.5 0.45 0.452 0.352];
scatter(x,y,10,'filled');
i=1;
a=[1 2 3 4 5 6];
strValues = strtrim(cellstr(num2str(a(:),'(%d)')));
text(x,y,strValues,'VerticalAlignment','bottom');
hold off