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來建模您的數據。