2015-04-02 75 views
2

我有一個快速提問。 我嘗試創建一個名爲'passavg_structure'的函數,該函數將空域結構數組(將在下面顯示)作爲輸入參數,並輸出前往指定城市的平均乘客量。顯示結構數組的某些元素

空域結構陣列看起來像這樣:

>> airspace(1) 

ans = 

    Flight_Number: 'BF 123' 
      Speed: 515.2000 
      Heading: 90 
     Passengers: 154 
       Crew: {'Behnam' 'Jane' 'Jill' 'Ning'} 
     Destination: 'Montreal' 
       Feet: 22000 
Latitude_Longitude: [50 100] 

>> airspace(2) 

ans = 

    Flight_Number: 'VSO 456' 
      Speed: 99.6000 
      Heading: 270 
     Passengers: 270 
       Crew: {'Frances' 'Jake' 'Jaiwei'} 
     Destination: 'Los Angeles' 
       Feet: 21000 
Latitude_Longitude: [50 80] 

>> airspace(3) 

ans = 

    Flight_Number: 'BF 8421' 
      Speed: 1.5057e+03 
      Heading: 170 
     Passengers: 0 
       Crew: {'Giuseppe' 'Susan'} 
     Destination: 'Calgary' 
       Feet: 33000 
Latitude_Longitude: [60 80] 

>> airspace(4) 

ans = 

    Flight_Number: 'AB 896' 
      Speed: 500 
      Heading: 90 
     Passengers: 132 
       Crew: {'Hao' 'Ashraf' 'Sue'} 
     Destination: 'Montreal' 
       Feet: 33000 
Latitude_Longitude: [50 100] 

所以我試圖做的是通過空域的名稱進行迭代,以及它是否在函數的輸入參數給出的名字,那麼它會找到名稱在結構數組中出現的位置並添加乘客號碼,然後除以名稱的使用次數來獲得平均值。我不完全的代碼如下:

function output = passavg_structure(airspace,name) 
output = 0; 
[a, b, c, d] = airspace(:).Destination; 
for k = {a,b,c,d} 
if strcmp(k,name) == 1 
    output = airspace().Passengers; 
else 
    output = 0; 
end 
output = output/; 
end 

林失去了如何找到loaction爲在一致的姓名結構數組中出現。我覺得這是我的代碼問題,因爲我不確定如何去做。

例如,讓我們說,我們所做的:

passavg_structure(airspace,'Montreal') 

輸出是= 143,因爲它增加了從那裏 蒙特利爾發生乘客和除以2呢,因爲蒙特利爾發生兩次。

任何幫助,將不勝感激!

謝謝大家。

回答

1
mean([airspace(strcmpi({airspace(:).Destination},'Montreal')).Passengers]) 

從內到外

  1. 獲取場目的地(回報逗號分隔的列表)
  2. 認沽CSV它變成一個細胞,因爲它包含字符串
  3. 使用strcmpi得到匹配項的邏輯索引
  4. 使用邏輯索引得到子結構包含所有數據與目的地蒙特利爾陣列
  5. 認沽CSV的,因爲它包含的數字數據
  6. 應用平均

如果沒有數據退出,平均收益NaN

1

您可以使用ismember以相當直接解決您的問題:

function out = passavg_structure(airspace, name) 

out = mean([airspace(ismember({airspace(:).Destination}, name)).Passengers]); 

out包含乘客的平均發生數爲目的地name

最佳,

+0

謝謝大家的幫助! – RN95 2015-04-02 21:22:46