【问题标题】:Matlab, How to retrieve subset of data from a Matrix which satisfy a specific conditionMatlab,如何从满足特定条件的矩阵中检索数据子集
【发布时间】:2015-09-25 21:30:33
【问题描述】:

所以我正在尝试在 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,  ...]

然后编写一些内容,如果 data3 和 data4 中的元素不满足在此 lat/lng 边界内的条件,则会删除一列。

伪代码即:

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

例如,如果 lat2 或 lng2 超出范围,则矩阵将被转换为:

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

我怎样才能使类似于上述伪代码的东西在 Matlab 中工作?我的最终目标是按位置边界组织/过滤矩阵。

感谢任何帮助!谢谢!

【问题讨论】:

    标签: matlab matrix subset


    【解决方案1】:

    您将创建一个符合所有条件的列的逻辑数组:

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

    然后将其用作matrix1 的列索引:

    filteredMatrix = matrix1(:, inRange);
    

    【讨论】:

    • 这非常有效!正是我想要的。非常感谢!
    猜你喜欢
    • 2014-09-08
    • 2018-10-06
    • 2012-01-22
    • 2013-03-05
    • 1970-01-01
    • 2020-02-11
    • 2018-02-26
    • 2017-02-10
    • 1970-01-01
    相关资源
    最近更新 更多