배경 : 저는 Matlab에서 유한 차이 스키마를 실행하고 있습니다. 두 변수의 함수를 구별하고 싶습니다 f(x,y)
. 대신 격자 점 F(:,:)
에 매트릭스 표현이 있습니다. F
이 1 차원 배열이면 차별화 연산자는 행렬 Delta(:,:)
이고 차별화는 F_tag = Delta*F
입니다.Matlab의 상자 행렬 연산자
그러나 F
이 매트릭스이므로 더 복잡해집니다. 기본 접근법은 n^2
1 차원 벡터로 F
을 표현한 다음 n^2 행렬에 n^2로 2d_Delta
을 표시하는 것입니다. 그러나 이것은 많은 비효율 성과 버그의 원천이 될 수 있습니다.
내 질문 :,는 n^2 행렬 - 벡터 multipication로 Delta*F
을 실행 상자 구현의 출력은 n 개의 * n을 매트릭스 F(:,:)
와 호환 매트릭스 운영자 Delta(:,:,:,:)
이 감안할? 유한 차분 분화 방식의 경우, 2 행렬 R에 의해 작성 될 수있는 임의의 매트릭스 운영자 A의 구체적
정확히 어떤 작업을하고 있는지 확실하지 않지만 'bsxfun'이 도움이 될 수 있습니다. 'bsxfun (@times, F, Delta)'또는'bsxfun (@times, Delta, F)'를 사용한다. –
기본 제공 기능 D = gradient (F); 다차원 입력에서 작동합니다. 사용자 정의 연산자의 경우 사용자 고유의 벡터화 표현식을 작성해야하며 bsxfun()이 도움이 될 것입니다. –
@AiridasKorolkovas 'gradient'와 'del2'를 살펴 봤습니다. 반복적으로 적용하면 새로운 구분을 할당합니다. 각 반복마다 행렬을 만들거나보다 효율적으로 처리 할 수 있습니까? –