使用来自另一个4D矩阵的数据创建/转换新的4D矩阵

时间:2019-02-15 20:55:52

标签: arrays matlab for-loop matrix

我有一个这样定义的矩阵:height(:,:,:,:)。四个维度是“纬度,经度,海拔和时间”。特别是在这里,我试图使此4D变量能够显示以米为单位的实际高度,而不是当前的表达式形式,即被调用的大气层(包括其下面的层)的总高度。对于每种纬度,经度和时间组合,其高度都不同,因此没有标准的“层高”。

调用height变量时,它显示指定的网格单元的“顶部”高度,但它们是可加的。例如,如果网格单元1的高度为40m,而网格单元2的高度为42米,则调用网格单元2的值将为82m。我想更改它,使存储的值为

我尝试创建一个for循环,该循环针对每个点调用层的高度,并减去该层的高度,然后才给出所调用层的高度。像这样:

h=0;
for index = 2:27
    for space = 1:26
        h = h + flheight(:,:,index,:) - flheight(:,:,space,:)
    end
end

虽然我目前收到的数值错误为“ 4.2961e + 05”,但对我个人而言,这可能是显而易见的。

当我拨打电话时,我期望的值大约是“ 32”米。

另外,看来我的矩阵只有一个高度尺寸(第3维度),而不是预期的27(可能与我的输出的巨大尺寸有关)。

完成此操作后,我计划手动将顶层的高度手动添加到以某种方式创建的矩阵中,但这是另一个步骤。现在,我正在尝试获取2-> 27层的单个高度。

编辑

所以:这是flheight中示例数据片段的格式。实际上,每个维度的长度都是flheight(336,264,27,25),但在这个示例中,我将制作一个精简版本。

flheight(1,1,:,1)大致为:

[ 40 
  82
  124
  169]

基本上,每种纬度,经度和时间组合都有27个海拔高度。我不想显示总高度,而是希望将其替换为不同的高度(如通过注释所述!)。 我正在尝试使变量“ h”转换为以下内容:

[ 40
  42
  42
  45 ]

此外,对于每个高度和时间组合,都有一个336x264矩阵。

1 个答案:

答案 0 :(得分:0)

所以,我至少解决了它!

我的结束代码是:

for index = 2:27
    h(:,:,index,:) = flheight(:,:,index,:) - flheight(:,:,index-1,:);
end

我的问题是我只是在说:

h= ...

但是我需要说:

h(:,:,index,:) = ...

所以我实际上是在海拔范围内更改索引!