2017-03-07 156 views
-1

我想在MATLAB中用不同的颜色保存多个圆形的png文件。我希望有一个名为多个文件:用matlab命名一个带有函数后缀的文件

RINGS_Base_<n><colorname> 

n显示不同的文件的数量和colorname是圆的颜色的名称。

由于圆圈有RGB颜色,我使用函数translatecolor将每个RGB颜色转换为颜色的实际名称。

当我命名每个文件时,我可以调用该函数吗?如果不是,我怎样才能用各自的颜色命名所有文件?

非常感谢您的帮助。

这里是我的代码:

RGB = [1 1 0; 1 0 1; 0 1 1; 1 0 0; 0 1 0; 0 0 1]; 

% 
%RIGNSGenerator_FilledCircle1 
% 
n=1; 
for col1 = transpose(RGB) 
    FilledCircle1(2,2,5,300,transpose(col1)) %function []=FilledCircle1(x0,y0,Radius,N,col1) 
    print (strcat ('/Users/Stimuli_Rings/RINGS_Circle_', num2str(n),translatecolor(col1), '.png'), '-dpng') %strcat is to combining strings together 
n=n+1; 
end 




function out=translatecolor(in) % translates the RGB colour into the actual name of the color 
switch(in) 
    case [1 1 0], out='yellow'; 
    case [1 0 1], out='pink'; 
    case [0 1 1], out='cyan'; 
    case [1 0 0], out='red'; 
    case [0 1 0], out='green'; 
    case [0 0 1], out='blue'; 
     return; 
end 
end 
+0

嗯......是吗?这里是否存在实际问题?它看起来像你已经在做的事情(至少大部分)是正确的... – tmpearce

+0

我有以下错误,我无法理解@tmpearce:>> RIGNSGenerator SWITCH表达式必须是标量或字符向量常量。 错误RIGNSGenerator> translatecolor(第18行) 开关(上) 错误RIGNSGenerator(第12行) 打印(strcat的( '/用户/ Stimuli_Rings/RINGS_Circle_',num2str(N),translatecolor(COL1),' '),'-dpng') %strcat是将字符串组合在一起 – Mraquel

回答

2

你的问题是与translatecolor函数,因为switch声明case语句不能是数字数组。而不是使用switch语句,您可以使用一种查找表,它依赖于将每个值分别放在单独的行中以及单元格数组中的相应字符串。然后,您可以使用ismember(使用'rows'选项)来确定哪个值对应于输入,然后使用结果来索引颜色名称数组。

values = [1 1 0; 
      1 0 1; 
      0 1 1; 
      1 0 0; 
      0 1 0; 
      0 0 1]; 

colors = {'yellow', 'pink', 'cyan', 'red', 'green', 'blue'}; 

out = colors{ismember(values, in(:).', 'rows')}; 
+0

我一直有以下错误,我不知道如何解决它:错误使用ismember> ismemberR2012a(第182行) 输入A和B必须是“行”情况下具有相同列数的矩阵。 ismember中的错误(第116行) lia = ismemberR2012a(A,B,logical(flaginds(1))); – Mraquel

+0

@Mraquel啊我现在看到,'in'是你数据中的列向量。我更新了代码以强制'in'作为一个行向量,允许进行适当的比较。 – Suever

+0

非常感谢你@Suever! – Mraquel

相关问题