[英]MATLAB: 2D DATA TO 3D ! How to?
我有一个34200 x 4
桌子。 该表显示了某些纬度和经度的 30 年月 pr(降水量)量。 所以列是lat
、 lon
、 date
和pr
。 我想将其转换为longitude x latitude x month
的 3D 矩阵。 我附上我的桌子。 请告诉我怎么做我是初学者。 如果我不想根据月份转换它,我可以但这个问题对我来说太复杂了。 请看我的表格,它只有 235 KB我将它上传到我的 DropBox,所以请点击右上角的打开并点击下载。
检查您的数据,您的纬度和经度值实际上代表了 95 个看似随机分散的独特位置。 您可以在下图中看到这一点。
length(unique(C.lat)) % 95
length(unique(C.lon)) % 95
scatter(C.lat, C.lon)
如果位置在网格中间隔开,则使用lat
和lon
作为数据矩阵的轴是有意义的。 但是,最好仅使用一个轴来表示唯一位置。 然后,这为您留下了代表日期的第二个轴。
length(unique(C.date)) % 360
360 * 95 % 34200 - the number of values we have
因此,我将数据存储在二维矩阵中,如下所示。
locations_lat = unique(C.lat, 'stable');
locations_lon = unique(C.lon, 'stable');
dates = unique(C.date, 'stable');
data = reshape(C.pr, length(dates), length(locations_lat)); % size 360 x 95
然后,要检查这是否有效,请选择一个随机示例。
location_num = 27;
date_num = 242;
lat = locations_lat(location_num) % 14.68055556
lon = locations_lon(location_num) % 65.23111111
date = dates(date_num) % 2/1/2009
precipitation = data(date_num, location_num) % 16.7179
在原始故事中搜索那个位置和日期,我们有:
9602| 14.6805555600000 65.2311111100000 '2/1/2009' 16.7179000000000
如果A
是具有 4 列[34200x4]
数据,那么您可以创建一个 3 维矩阵,如下所示:
B = zeros(len(A),3)
B(:, 1) = A(:, 1)
B(:, 2) = A(:, 2)
B(:, 3) = A(:, 3)
甚至可能:
B(:,1:3) = A(:, 1:3)
根据您的数据设置方式,您可能需要转置:
B = 'B
只要维度匹配,您就可以映射数据。
如果您有更多列或用于动态数据条目,则可以实现 for 循环。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.