0

让我们举一个简单的例子。我正在尝试改变我的思维方式以更加面向矩阵。

我有数据

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));

我想得到输出

ia) Epsilon = 0.001
ia) Epsilon = 10*h,
iQ Epsilon = h,
ib) Epsilon = 0,

但我明白了

在此处输入图像描述

我有一种直觉,有一种更好的方法可以做到这一点 - 组件明智。

不使用 for 循环,仅通过矩阵,如何实现结果?

4

2 回答 2

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删除尾随空格(请参阅doc of strcat

于 2013-10-14T21:53:42.050 回答
2

检查此行的输出:

situations = ['i.a)' 'i.a)' 'i.Q' 'ii.:w'];

这是大小为 1 16 的单个字符,而不是您想要的数组。我建议使用单元格:

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));
于 2013-10-14T21:55:13.187 回答