Me gustaría asignar una matriz B
para que sea de la misma forma y tienen los mismos límites inferiores y superiores que otra matriz A
. Por ejemplo, podría usarAsignación de matrices del mismo tamaño
allocate(B(lbound(A,1):ubound(A,1), lbound(A,2):ubound(A,2), lbound(A,3):ubound(A,3)))
Pero no sólo es poco elegante, sino que también se pone muy molesto para matrices de (incluso) dimensiones más altas.
Me esperaba algo más como
allocate(B(shape(A)))
que no funciona, y aunque esto no hizo el trabajo, cada dimensión comenzaría a 1, lo cual no es lo que quiero.
¿Alguien sabe cómo puedo asignar fácilmente una matriz para tener el mismo tamaño y límites que otra matriz fácilmente para las dimensiones de matriz arbitraria?
¿Puedo preguntar por qué es necesario hacer esto. ¿No puede asignar 'B' al mismo tiempo que' A' (o al menos en el mismo ámbito, cuando tendrá acceso a los parámetros de límites/formas de matriz utilizados para asignar 'A'). Alternativamente, si está pasando 'A' a una función o subrutina, ¿no puede simplemente tener una matriz de tamaño supuesto' B' local para esa rutina que asume la forma de 'A'? – Chris
Bueno, supongo que no NECESITO esto, es realmente poco elegante. El conjunto 'A' se asigna en un archivo .f diferente con los límites 'A (nlmx-a_offset: nlpx + b_offset, ...)', observará que esto tiene más caracteres que el uso de l/ubound. – user1173081
Entonces creo que la respuesta de M.S.B. es probablemente la mejor manera de hacer lo que está tratando de hacer. – Chris