Изменение формы массивов Фортрана - PullRequest
0 голосов
/ 12 сентября 2018

У меня есть огромный массив m by 1 (m очень большой), называемый X, который является результатом операции Fortran matmul. Моя проблема состоит в том, чтобы сохранить этот очевидно двумерный массив в одномерный массив Y размером m.

Я пытался с Y = reshape(X, [[2]]), и это результат некоторых элементов NaN. Может кто-нибудь указать мне на команды Фортрана, чтобы сделать это быстро. Элементы X могут быть нулевыми или ненулевыми.

1 Ответ

0 голосов
/ 12 сентября 2018

Второй аргумент reshape (или аргумент с ключевым словом shape=) - это форма результата функции.В своем вызове вы запросили фигуру [2].

Массив с формой [2] - это массив ранга 1 с двумя элементами.Вам нужен массив ранга 1 с m элементами:

Y = RESHAPE(X, [m])

Теперь в этом случае нет необходимости использовать reshape:

Y = X(:,1)

, где правая частьсекция массива rank-1 в X.


Если у вас есть Y=reshape(X,[2]), если Y не выделяется и не имеет размера 2, тогда у вас есть проблема, которая может действительно привести к решению вашего компилятора--- как он вполне может сделать - дать вам несколько NaN с.

Обратите внимание, что вам может не понадобиться изменять ваш массив, в зависимости от того, какВы собираетесь позже использовать его.

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