Предположим, у меня есть матрица A в Fortran, который (п, м), и вектор B, который представляет собой (1, м). Я хочу вычесть вектор B из всех строк A без использования цикла.Вычесть вектор из матрицы (строчном)
В настоящее время я только был в состоянии сделать это с помощью цикла:
PROGRAM Subtract
IMPLICIT NONE
REAL, DIMENSION(250,5) :: A
INTEGER, DIMENSION(1,5) :: B
INTEGER :: i
B(1,1) = 1
B(1,2) = 2
B(1,3) = 3
B(1,4) = 4
B(1,5) = 5
CALL RANDOM_NUMBER(A)
do i=1,250
A(i,:) = A(i,:) - B(1,:)
end do
end program
Но это очень неэффективно. Например. в matlab можно сделать это в одной строке, используя функцию reptmat. Любое предложение о лучшем способе сделать это?
Это действительно дубликат этого сообщения. Я искал форум, но мы использовали очень разную английскую терминологию. – phdstudent
Поиск намного проще, когда вы знаете ответ. Но это точка дублирующей системы: разные способы формулировки того же вопроса, указывающего на один набор ответов. – francescalus