둘 다 사용합니다. 언급 한 것처럼 순수한 수학 언어에 가까운 알고리즘을 표현하는 것이 더 쉽기 때문에 Matlab에서 함수 및 알고리즘을 프로토 타입하는 경우가 많습니다.
R은 훌륭한 라이브러리를 가지고 있습니다. 나는 아직도 그것을 배우고 있지만, 일단 R을 알고 나면 거기에서 함수를 프로토 타입하는 것이 매우 쉽기 때문에 Matlab을 먼지에 맡기고 있습니다.
그러나 프로덕션 환경에서 알고리즘이 효율적으로 작동하려면 C ++과 같은 컴파일 된 언어로 이동하는 것이 가장 좋습니다. C ++을 Matlab과 R 모두에 랩핑 한 경험이 있지만 R과 관련하여 더 나은 경험을 가지고 있습니다. 면책 조항 : 대학원생이기 때문에 dll에 최신 버전의 Matlab을 사용하지 않았습니다. 나는 Matlab 7.1에서 거의 독점적으로 일해 왔습니다 (4 세와 같습니다). 아마도 최신 버전이 더 잘 작동하지만 Matlab의 뒷면에있는 C ++ dll이 Windows XP를 블루 스크린으로 만들었을 때 두 가지 상황을 생각할 수 있습니다. 실수를 할 때마다 컴퓨터가 재부팅되면 디버그하십시오 ...
마지막으로, R 커뮤니티는 Matlab 커뮤니티보다 훨씬 더 빠른 속도로 더 많은 모멘텀으로 성장하고 있습니다. 또한 무료이기 때문에 Godforsaken flexlm 라이센스 관리자를 다루지 않아도됩니다.
참고 : 거의 모든 개발 과정은 현재 MCMC 알고리즘입니다. ggplot2를 사용하여 R에서 시각화하여 C ++에서 약 90 %를 생산합니다.
병렬 주석 업데이트 :
현재 MCMC 루틴을 병렬화하는 데 상당한 개발 시간이 소요됩니다 (제 박사 학위 논문입니다). Matlab의 병렬 도구 상자와 Star P의 솔루션을 사용했습니다 (이제 Microsoft 가 소유하고 있다고 생각합니다 -또 다른 도구가 엉망이되었습니다 ...) 병렬 도구 상자가 구성 악몽 이라는 것을 알았습니다. 모든 단일 클라이언트 노드에 대한 루트 액세스가 필요했습니다. 나는 그들이 그 작은 "버그"를 고쳤지만 여전히 엉망이라고 생각합니다. * 'p 솔루션은 우아하지만 프로파일 링이 어려운 것으로 나타났습니다. Jacket을 사용하지 않았지만 좋은 소식을 들었습니다. 또한 GPU 계산을 지원하는 최신 버전의 병렬 도구 상자도 사용하지 않았습니다.
R 병렬 패키지에 대한 경험이 거의 없습니다.
작업 분해 및 메모리 / 자원 할당에 대한 세밀한 제어가 가능한 C ++ 수준에서 병렬 코드가 발생해야한다는 것은 저의 경험이었습니다. 프로그램을 높은 수준으로 병렬화하려고 시도하면 코드를 사소하게 분해 할 수없는 경우 (더미 병렬화라고도 함) 가 아닌 경우에만 속도가 최소화 됩니다. 즉, OpenMP를 사용하여 C ++ 수준에서 단일 라인 을 사용하여 합리적인 속도 향상을 얻을 수 있습니다 .
#pragma omp parallel for
더 복잡한 체계에는 학습 곡선이 있지만 gpgpu 일이 실제로 진행되는 것을 좋아합니다. 올해 JSM을 기준으로 R에서 GPU 개발에 관해 이야기 한 소수의 사람들은 "심각한 발가락"이라고 만 말합니다. 그러나 언급 한 바와 같이, 나는 가까운 미래에 변화 할 최소한의 경험을 가지고 있습니다.