포트란에서 이것을 코딩하는 더 좋은 (간결한) 방법이 있을까? a(3, 3)
의 각 열에 b(3)
의 각 값을 곱하려고합니다. 나는 파이썬에서 np.multiply
이 있고, 포트란에 대해서는 확실하지 않다는 것을 알고있다.포트란 90/95에서 방송 배열 곱셈
!!! test.f90
program test
implicit none
integer, parameter :: dp=kind(0.d0)
real(dp) :: a(3, 3)=reshape([1, 2, 3, 4, 5, 6, 7, 8, 9], [3, 3]),&
b(3)=[1, 2, 3]
integer :: i
do i = 1, 3
a(:, i) = a(:, i) * b(i)
end do
write(*, *) a
end program test
미리 감사드립니다. 특정 B를 재사용하는 경우
감사합니다! 이것은 절대적으로 "표준"방법입니다. 또한 귀하의 의견을 주셔서 감사합니다. 당신은 옳습니다.이 글쓰기 방법은 더 짧지 만 이해하기가 더 어렵습니다. 더 중요한 것은 배열을 복사하므로 효율성이 떨어질 수 있습니다. 이것이 더 나은 관행인지는 여전히 의문의 여지가 있습니다. –
실제 문제가 거의 '3x3'행렬 또는 훨씬 큰 행렬 일 경우 큰 차이가 날 것입니다. – agentp
이것이 원하는 목적을 달성하는 표준 * 방법이라고 확신하지 않습니다. 루프는 여전히 포트란에서 일하는 표준 방법입니다. 때로는 때로는 잘못되었습니다. –