将文本或字符串添加到矩阵的行

时间:2010-11-03 23:21:28

标签: matlab

我在向矩阵的行添加标签时遇到问题。这是我目前的代码:

Probability = ['Hole 1', US_par3_Win, par3_Draw, EU_par3_Win;
               'Hole 2', US_par3_Win, par3_Draw, EU_par3_Win]

我添加了带单引号的标签,但收到错误。谁能引导我朝着正确的方向前进?谢谢!

3 个答案:

答案 0 :(得分:3)

MATLAB矩阵只能存储相同类型的元素。另一方面,单元阵列没有这种限制。我建议您按原样保留矩阵,并添加另一个单元格数组变量来存储每行的标签。例如:

M = [1 2 3; 4 1 2; 4 1 1];
labels = {'row1'; 'row10'; 'row100'};

%# display 2nd row and its label
M(2,:)
labels{2}

答案 1 :(得分:2)

如果变量(例如US_par3_Win)是标量,则以下内容应该有效:

Probability = {'Hole 1', US_par3_Win, par3_Draw, EU_par3_Win;...
               'Hole 2', US_par3_Win, par3_Draw, EU_par3_Win}

但是,如果变量是例如18-by-1数组,然后你应该通过首先创建一个Hole名称数组

来组合它们
holeNames = arrayfun(@(x)sprintf('Hole %i',x),(1:18)','UniformOutput',false);  %'#

然后像这样安排

Probability = [holeNames,num2cell(US_par3_Win),...
               num2cell(par3_Draw),num2cell(EU_par3_Win)];

但是,如果不是写'Hole 1''Hole 2'等,而只是在probability数组的第一列中输入孔的数量,那么你最有可能好多了。 ,即

Probability = [1, US_par3_Win, par3_Draw, EU_par3_Win;...
               2, US_par3_Win, par3_Draw, EU_par3_Win]

答案 2 :(得分:0)

组织数据的另一种方法可能是struct。如果您想进一步使用classes来建模数据。