2015-04-01 79 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