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)
才能使用“整体”颜色映射。