我们举一个简单的例子。我试图改变我的思维方式,以获得更多的矩阵导向。
我有数据
epsilonM = [0.001 10*h h 0];
situations = ['i.a)' 'i.a)' 'i.Q' 'ii.:w'];
hleg = legend(sprintf('%s Epsilon = %d, \n', situations, epsilonM));
我想获得输出
i.a)Epsilon = 0.001
i.a)Epsilon = 10 * h,
i.Q Epsilon = h,
i.b)Epsilon = 0,
但我得到
我有一种直觉,有一种更好的方法可以做到这一点 - 组件明智。
如何在不使用for循环的情况下,仅通过矩阵来实现结果?
答案 0 :(得分:3)
在这种情况下,使用单元格数组会更容易:
situations = {'i.a)' 'i.a)' 'i.Q' 'i.b)'};
epsilonM = {'0.001' '10*h' 'h' '0'};
aux = strcat(situations, {' Epsilon = '}, epsilonM);
legend(aux);
请注意{' Epsilon = '}
中的花括号只是为了防止strcat
删除尾随空格(请参阅strcat
的{{3}})
答案 1 :(得分:2)
检查此行的输出:
situations = ['i.a)' 'i.a)' 'i.Q' 'ii.:w'];
这是一个大小为116的单个字符,而不是您想要的数组。我建议使用一个单元格:
situations = {'i.a)' 'i.a)' 'i.Q' 'ii.:w'};
。
因此:
epsilonM = [0.001 10*h h 0];
situations = {'i.a)' 'i.a)' 'i.Q' 'ii.:w'};
hleg = legend(sprintf('%s Epsilon = %d, \n', situations{:}, epsilonM));