重复值的行组合

2次观看(最近30天)
马哈
马哈 2020年2月21日
评论: 马哈 2020年2月25日
你好,
对于不同的深度,我有不同的变量(日期,时间,LAT,LON)和X,其中每列代表不同深度的n次(不同深度的数量)相同的变量,让人说0 m,100 m,100 m,500 m。这里是一个更明确的示例:
a = [20200101,Nan,Nan,1200,Nan,Nan,90,Nan,Nan,45,Nan,Nan,2,Nan,Nan,Nan;%0 m
Nan,20200101,Nan,Nan,1200,Nan,Nan,90,Nan,Nan,45,Nan,Nan,3,3,Nan;%100 m
Nan,Nan,20200101,Nan,Nan,1200,Nan,Nan,90,Nan,Nan,45,Nan,Nan,Nan,4];%500 m
如何将重复的频段组合保持在日期,时间,纬度和经度,因此我的最终输出将是每个唯一的日期 /时间 / lat / lon:
b = [20200101,1200,90,45,2,3,4];%日期 /时间 / lat / lon / val 0m / val100m / val500m
我正在考虑使用一个for loop with find
查找(a(i,1)== a(::,2)&a(i,1)== a(::,3)等)
但是,如果我有50个不同的深度,那将是很多组合。有人有更简单的方法吗?
干杯
1条评论
乔恩
乔恩 2020年2月21日
我不明白您的A矩阵中的列代表什么。特别是如何在每行不同的列中出现日期。同样,为什么纬度出现在不同的列中。看起来他们在每个成功的行中通过1列转移,但是我不知道是否总是这样,这意味着什么。

登录发表评论。

答案(1)

Spencer Chen
Spencer Chen 2020年2月21日
现在,您对列结构并不十分清楚。我像以下内容一样了解:
a = [date.depth1,date.depth2 .. date.depthntime,lat.depth1,lat.depth2 .. lat.depthn等]
%a =行x(深度和var)
如果是这样,那么此类代码会解决您的问题:
nrows = size(a,1);
ndepth = 3;
a2 = reshape(a,nrows,ndepth,[]);%a2 =行x depth x var
b =挤压(nansum(a2,2));
它的关键是使用nansum()结合和忽略其他深度的值。因此,我们重组矩阵,因此我们可以使用nansum()。
祝福,
斯宾塞
5条评论
马哈
马哈 2020年2月25日
我的实际实际矩阵看起来像是A1,从我的上一条消息中,有500k行和10个不同的深度。
结果,我需要B矩阵(每个深度信息以获取独特的空间和时间信息)。
我显示的解决方案仅适用于一致的矩阵A2,其中每行都代表一个深度。我的A1 / True矩阵不一致。
我想
1)从A1切换到A2,然后我可以应用以前的解决方案
或者
2)找到将A1转换为B的直接解决方案

登录发表评论。

社区寻宝

在Matlab Central中找到宝藏,发现社区如何为您提供帮助!

开始狩猎!