2015-04-01 84 views
1

我試圖在這裏創建一個名爲'crewsize'的需要空域單元格數組(單元格數組'空域'將顯示在下面)的函數,並且輸出將使用fprintf表中的航班號和船員人數。 空域單元陣列看起來像這樣使用for循環打印單元格數組中的信息

airspace = 

'BF 123'  [ 515.2000] [ 90] [154] 'Behnam Jane Jill...' 'Montreal'  [22000] [1x2 double] 
'VS0 456' [ 99.6000] [270] [ 31] 'Frances, Jake, J...' 'Los Angeles' [21000] [1x2 double] 
'BF 8421' [1.5057e+03] [170] [ 0] 'Giuseppe, Susan'  'Calgary'  [33000] [1x2 double] 
'AB 896'  [  500] [ 90] [132] 'Hao, Ashraf, Sue'  'Montreal'  [33000] [1x2 double] 

的〔1×2雙列]可以忽略不計了這個問題。 至於功能,我完全失去了,不知道如何從我的代碼進行,我不明白fprintf的概念,真的很想幫助! 我的功能代碼到目前爲止是:

function crewsize(airspace) 
for k = 1:4 
a = airspace(k); 
b = airspace{k,5}; 
fprintf('Flight Number Crew Size\n %5.1f %5.1f',a,b) 

任何幫助,在此將不勝感激。再次,對於輸出,我試圖打印只是航班號(第一列)和該船員的人數(第五列)

謝謝大家!

+0

我想,你應該寫一個'= {空域K,1};'當然結束for循環。爲了您自己的理解,您應該通過在命令窗口中鍵入'whos a'來檢查'a'。你會看到'a'仍然是一個單元格。所以,爲了提取單元格的內容,你應該使用花括號。 – 2015-04-01 19:13:07

+0

你的主要問題是試圖打印一個字符串和一個整數作爲花車。查看'fprintf'的[格式說明](http://www.mathworks.com/help/matlab/ref/fprintf.html#inputarg_formatSpec)。 – Setsu 2015-04-01 19:16:22

回答

1

您應該使用%s%i formatSpecs(用於字符串和整數)。計算船員人數也有一定難度,但您可以使用strsplit(在最近的版本中)或regexp函數。

在實踐中:

function crewsize(airspace) 

for k = 1:4 
    a = airspace{k,1}; 
    b = numel(regexp(airspace{k,5}, ' ', 'split')); 
    fprintf('Flight Number: %s - Crew Size: %i\n',a,b); 
end 

最佳,

+0

非常感謝! – RN95 2015-04-02 00:37:52