【发布时间】:2019-07-10 01:06:42
【问题描述】:
我有一个这样定义的矩阵:height(:,:,:,:)。四个维度是“纬度、经度、高度和时间”。具体来说,我试图让这个 4D 变量能够显示以米为单位的实际高度,而不是当前的表达形式,即所谓的大气层(包括其下方的总高度)的总高度。每个纬度、经度和时间组合的高度都是不同的,没有标准的“层高”。
当调用高度变量时,它显示指定网格单元的“顶部”高度,但它们是相加的。例如,如果网格单元 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 矩阵。
【问题讨论】:
-
不明白。我认为您想获得沿维度 3(高度)的
flheight值之间的差异?喜欢ouput = diff(flheight,1,3);?一个最小的、完整的和可验证的示例将有所帮助(显示一小部分的数据和预期结果)。 -
@Brice 感谢您的反馈。我会继续尝试使用一小部分数据进行编辑并简化我的问题
-
@Brice 我已经修改了(希望)一个更好的例子来说明我的预期变化。
-
@Brice 我想我设法解决了!我意识到了我的问题,但感谢您用 cmets 推动我前进!
标签: arrays matlab for-loop matrix