2015-09-25 29 views
1

所以我想在matlab中做一些數據處理,但我在過濾掉我需要的數據時遇到了問題。Matlab如何從滿足特定條件的矩陣中檢索數據的子集

所以我的數據是格式。

data1 = [time1, time2, time3, time4, time5, time...] 
data2 = [d1, d2, d3, d4, d5, d....] 
data3 = [latitude1, latitude2, latitude3, latitude4, latitude5, latitude....] 
data4 = [longitude1, longitude2, longitude3, longitude4, longitude5, longitude...] 

鑑於每列中的所有數據都是相關的。每行都有相同數量的元素。

我想要做的是過濾掉某些經度和緯度不適合的數據。

所以我的想法是把這些都變成一個矩陣,

matrix1 =[data1;data2;data3;data4] 

給予類似:

[ time1, time2, time3, ...] 
| d1, d2, d3, ...| 
| lat1, lat2, lat3, ...| 
[ lng1, lng2, lng3, ...] 

,然後寫一些東西,會刪除列,如果在數據3和數據4元不符合在這個緯度/經度邊界內的條件。

僞代碼,即:

if(!data3.entry.isInRange(latrng1,latrng2) || !data4.entry.isInRange(lngrng1,lngrng2)){ 
deleteCurrentColumn; 
} 

因此,舉例來說,如果LAT2或lng2是出界的矩陣將被轉換成:

[ time1, time3, ...] 
| d1, d3, ...| 
| lat1, lat3, ...| 
[ lng1, lng3, ...] 

我怎麼能去製作類似的東西在Matlab上面的僞代碼工作?我的最終目標是按位置邊界組織/過濾矩陣。

任何幫助表示讚賞!謝謝!

回答

2

你會創建一個滿足所有的標準列的邏輯陣列:

inRange = (data3 >= latrng1) & (data3 <= latrng2) &... 
      (data4 >= lngrgn1) & (data4 <= lngrng2); 

然後使用它作爲列索引matrix1

filteredMatrix = matrix1(:, inRange); 
+0

這完美地工作!正是我在找什麼。非常感謝你! – Dave

相關問題