Создание / преобразование новой 4D матрицы с данными из другой 4D матрицы - PullRequest
0 голосов
/ 15 февраля 2019

У меня есть матрица, определенная так: высота (:,:,:, :).Четыре измерения: «широта, долгота, высота и время».В частности, здесь я пытаюсь сделать так, чтобы эта переменная 4D могла отображать фактическую высоту в метрах, а не текущую форму выражения, которая является общей высотой вызываемого атмосферного слоя (включая те, что находятся под ним).Для каждой комбинации широты, долготы и времени высота различна, стандартная «высота слоя» отсутствует.

Когда вызывается переменная для высоты, она отображает «верхнюю» высоту указанной ячейки сетки,но они аддитивныНапример, если ячейка сетки 1 имеет высоту 40 м, а ячейка сетки 2 имеет высоту 42 метра, то при вызове ячейки сетки 2 вы получите значение 82 метра.Я хочу изменить это так, чтобы сохраненное значение было

. Я пытался создать цикл 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 голосов
/ 16 февраля 2019

Итак, я решил это ... по крайней мере, в основном!

Мой конечный код был:

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

Моя проблема заключалась в том, что я говорил только:

h= ...

но вместо этого мне нужно было сказать:

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

, чтобы я фактически менял индексы в пределах измерения высоты!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...