2010-11-03 75 views
1

我遇到了将问题添加到矩阵的行中的问题。这里是我目前的代码:将文本或字符串添加到矩阵的行

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

我用单引号添加了标签,但出现错误。任何人都可以引导我走向正确的方向吗?谢谢!

+0

如果您将错误消息粘贴到您的问题中,并附上'US_par3_Win'等值,将会有所帮助。 – 2010-11-03 23:40:07

回答

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} 
+0

嗯,这似乎不适用于我。我得到: ANS = ANS = row10 当运行代码 – ajj 2010-11-04 00:04:56

+0

这正是我希望它是!当然,您可以使用FPRINTF函数将输出格式化为更好的格式。例如,您可能应该更多地解释您要做什么? – Amro 2010-11-04 00:15:19

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×1阵列,那么你应该首先创建孔名

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] 
0

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