'相乘'字符串单元格组成一个组合字符串的MxN大小单元格阵列
问题描述:
我绘制了可变数量的行。'相乘'字符串单元格组成一个组合字符串的MxN大小单元格阵列
线的数量是另两个数的乘积,以便(例如)对于所有的前缀A
,并且所有的后缀B
,我绘制 ['A(i)','B(j)']
。
我可以使用字符串'-'
,':'
,'--'
,'-.'
设置线型 - 我想用这些通过他们的指数A
分离出的线条。
我可以使用字符串如'g'
,'b'
,'r'
设置线条颜色。
设置这些使用switch
或for
循环并不难。
是否有可能'相乘'两个单元格形成一个字符串/单元格持有指定所有线类型所需的完整字符串/单元格?
如果我有
lineType = {'-',':','--','-.'};
lineColor = {'g','b','r'};
我怎样才能得到
lineString = {'g-','g:','g--','g-.',...
'b-','b:','b--','b-.',...
'r-','r:','r--','r-.'};
简单的解决方案(请让我知道,如果有一个内置的,或者更好的解决方案)
lineString = cell(sizeA*sizeB, 1);
idx = 1;
for i = 1:sizeA
for j = 1:sizeB
lineString{idx} = [A{i},B{j}];
idx = idx + 1;
end
end
答
我有一个替代解决方案。使用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);
您可以用'cellfun(@ horzcat,'以保存注释一步 – thewaywewalk
谢谢,我已经编辑我的答案因此。 – user3667217