Matlab-从矩阵创建向量

Matlab-从矩阵创建向量,matlab,for-loop,vector,matrix,colors,Matlab,For Loop,Vector,Matrix,Colors,我有一些像下面这样的颜色矩阵,最初,只有一个颜色矩阵,它工作得很好 [66 92 143]/255; %DARKBLUE [21 59 99]/255; %BLACK [0 0 0]; %Pure black tempPoint.set('mark_color',{[21 59 99]/255}); 我试着把这些颜色矩阵放到一个向量中,这样我就可以在这样的循环中使用它: farbe=[[21 59 99]/255 [0 0 0] [66 92 143]/255]; for i=1:le

我有一些像下面这样的颜色矩阵,最初,只有一个颜色矩阵,它工作得很好

[66 92 143]/255; %DARKBLUE 
[21 59 99]/255; %BLACK
[0 0 0]; %Pure black

tempPoint.set('mark_color',{[21 59 99]/255});
我试着把这些颜色矩阵放到一个向量中,这样我就可以在这样的循环中使用它:

farbe=[[21 59 99]/255 [0 0 0] [66 92 143]/255];

 for i=1:length(farbe) 

tempPoint.set('mark_color',{farbe(i)}); 

end
farbe=[[21 ;59 ;99]/255 [0 ;0 ;0] [66; 92 ;143]/255]
但不幸的是,它不起作用,它给出了一个“颜色值必须是3个元素的数字向量”错误

在这个话题上,我试图找到一个解决问题的方法,但无法使它对我的问题起作用:

如何将这些矩阵放入向量中,并使用循环中的每个元素


任何帮助都将不胜感激。

您的问题是:您的新
farbe
尺码为9号。因此,在您的循环中,您仅使用1个输入而不是3个输入来调用它。更改farbe中的参数或更改数据类型。 这里有两种解决方案:
1解决方案:使用单元格:

%I changed farbe to be a cell array with each element containing 1 colour
farbe={[21 59 99]/255, [0 0 0], [66 92 143]/255};

 for i=1:length(farbe) 
  %Here the call farbe changed (using {} instead of() to get the values)
  tempPoint.set('mark_color',{farbe{i}}); 

end
第二种解决方案:其他循环

farbe=[[21 59 99]/255 [0 0 0] [66 92 143]/255];

 for i=1:length(farbe)/3 

tempPoint.set('mark_color',{farbe(3*i-2:3*i)}); 

end
这里的different参数用于确保使用正确的索引。您还可以将循环参数更改为
i=1:3:7
并使用
farbe(i:i+2)


作为注释,您不应该使用i作为参数,因为它也是虚单位的MATLAB内部变量。和j一样。使用ii和jj或其他工具。


此外,我无法测试我的解决方案,因为我没有
temp.Point.set
方法。因此,我们非常感谢您的反馈。

您可以通过两种方式来实现这一点,即将
farbe
制作成如下矩阵:

farbe=[[21 59 99]/255 [0 0 0] [66 92 143]/255];

 for i=1:length(farbe) 

tempPoint.set('mark_color',{farbe(i)}); 

end
farbe=[[21 ;59 ;99]/255 [0 ;0 ;0] [66; 92 ;143]/255]
然后

for i=1:length(farbe) 

tempPoint.set('mark_color',{farbe(:,i)}); 

end
或者通过以下方式将其作为一个单元:

farbe=[{[21 59 99]/255} {[0 0 0]} {[66 92 143]/255}];

for i=1:length(farbe) 

tempPoint.set('mark_color',{farbe{i}}); 

end

将它们放入单元格矩阵
farbe={[21 59 99]/255[0 0],[66 92 143]/255}
然后在调用它们时使用
farbe{i}
小心使用}not)。您的第一个解决方案不应该起作用。如果我没有弄错,您的调用
farbe(I)
仍然只返回一个值。您必须将其更改为
farbe(:,i)
才能使用“整体”颜色映射。