'乘以'字符串单元格以形成组合字符串的MxN大小单元格数组

时间:2015-09-07 01:22:54

标签: string matlab plot colors cell-array

我正在绘制可变数量的行。

行数是两个其他数字的乘积,因此(例如)对于所有前缀A和所有后缀B,我绘制 ['A(i)','B(j)']

我可以使用字符串'-'':''--''-.'来设置线型 - 我希望使用这些线条按{{{}}中的索引来分隔线条1}}。

我可以使用A'g''b'等字符串设置线条颜色。

使用'r'switch循环设置这些并不是那么难。

是否可以'乘以'两个单元格以形成一个字符串/单元格,其中包含指定所有行类型所需的完整字符串/单元格?

如果我有

for

我怎样才能获得

lineType = {'-',':','--','-.'};
lineColor = {'g','b','r'};

简单的解决方案(如果有内置或更好的解决方案,请告诉我)

lineString = {'g-','g:','g--','g-.',...
              'b-','b:','b--','b-.',...
              'r-','r:','r--','r-.'};

2 个答案:

答案 0 :(得分:2)

我有另一种解决方案。使用repmat消除for循环的需要,并使用cellfun执行字符串的连接。您需要将UniformOutput中的cellfun设置为false,因为输出既不是标量单元数组,也不是标量结构,也不是标量值。

lineType_ = repmat(lineType, size(lineColor,2), 1);
lineColor_ = repmat(lineColor', 1, size(lineType,2));
lineString = cellfun(@horzcat, lineColor_, lineType_, 'UniformOutput', 0);

答案 1 :(得分:2)

使用ndgridstrcat

可以轻松完成此操作
[cc, tt] = ndgrid(1:numel(lineColor), 1:numel(lineType));
lineString = strcat(lineColor(cc), lineType(tt));