Изменение формы измерения матрицы - PullRequest
1 голос
/ 29 апреля 2019

Я пытаюсь изменить одно из измерений матрицы в 2d в Фортране

У меня есть матрица "VFM [4208,5155]". Из этого я хочу преобразовать "vfm [4208,1166: 5515]" в "vfm [4208,290]".

Извлечение vfm [4208,1166: 5515] превращает его в vfm [4208,4350]. Кроме того, я хочу изменить второе измерение (4350) в 2d (290x15), а затем усреднить измененную матрицу по второму измерению (15). Это означает, что окончательная матрица должна быть как "vfm [4208,290]".

Вот поток кода: vfm [4208,4350] -> vfm [4208,290,15] ---> vfm [4208,290]

Фактический мой код слишком длинный, поэтому я пишу связанную часть кода здесь.

Character*80:vfmf
integer, dimension(:,:), allocatable, target :: vfm
integer, dimension(:,:), pointer :: vfm1

xdim=4208
ydim=5515

open(16,file=vfmf,status='old')

allocate(vfm(xdim,ydim))

read(16,*)((vfm(ii,jj),jj=1,ydim),ii=1,xdim)

vfm1 => vfm(:,1166:5515)

vfm2=reshape((vfm1),(/xdim,4350/),(/xdim,290,15))

Stop
End

После этого я сталкиваюсь со следующей ошибкой

Error: Syntax error in array constructor at (1)

Я не могу изменить vfm [4208, 4350] до vfm [4208,290,15], используя fortran в Ubuntu.

Пожалуйста, помогите мне решить эту проблему.

Заранее спасибо.

...