在Matlab中对矩阵的思考

时间:2013-10-14 21:36:57

标签: matlab

我们举一个简单的例子。我试图改变我的思维方式,以获得更多的矩阵导向。

我有数据

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,

但我得到

enter image description here

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

如何在不使用for循环的情况下,仅通过矩阵来实现结果?

2 个答案:

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