우리의 슈 스트링 작업에서 우리는 임베디드 하드웨어에서 C 구현을 수행하기 전에 몇 가지 고급 언어로 알고리즘을 프로토 타입해야합니다.
지금까지이를 위해 MATLAB을 사용해 왔지만 라이선스 비용이 줄어들 기 시작했습니다. MATLAB 코드를 Octave로 이식하는 것을 고려 중입니다.
그렇게하지 않는 특별한 이유 가 있습니까? 특히 MATLAB 사용을 고집하는 외부 파트너가있는 경우 호환성이 깨질까요? 예상 할 수있는 성능상의 불이익이 있습니까?
답변
2008 년에도 똑같은 일을 시도했습니다. 나는 다음과 같은 쇼 스토퍼를 빠르게 발견했습니다.
- 도구 상자는 완전하지 않고 잘 테스트되지 않았습니다. 특히 내 작업이 크게 의존했던 이미지 처리 도구 상자 (큰 쇼 스토퍼는 imtransform이 구현되지 않았다는 것입니다).
- Octave 디버거와 프로파일 러는 Matlab에 비해 원시적이었습니다.
- 다른 사람들과 함께 일하면 그들을 변화시키기가 매우 어려울 수 있습니다.
- 타사 도구 상자를 사용하는 경우 해당 도구 상자를 직접 사용하는 것입니다.
- Octave의 플롯은 출판 품질이 아닙니다.
그러나 나는 일반적으로 Octave가 Matlab과 얼마나 호환되는지에 대해 깊은 인상을 받았다고 말해야합니다. Matlab을 기본적으로 사용한다면 운이 좋을 수도 있습니다. 마지막으로 이것은 2008 년이었습니다. 2 년 안에 상황이 많이 바뀔 수 있습니다.
답변
내 머리 꼭대기에서 :
- 두 학기 전 기계 학습 과정에서 숙제를하려고했을 때 발견했듯이 Octave에는없는 도구 상자가 많이 있습니다.
- Octave는 훨씬 열등한 디버거를 가지고 있습니다. 함께 일하는 것은 거의 불가능했습니다.
- Matlab은 다양한 유형의 작업에서 훨씬 빠릅니다.
- Matlab의 플롯이 훨씬 더 좋습니다.
- Octave에는 기본 GUI가 없습니다. Octave 용 GUI가 있지만 Matlab의 기본 GUI보다 열등합니다.
답변
옥타브와 R도 테스트했습니다.
옥타브와 관련하여 : 저는 옥타브 구문의 유사성에 깊은 인상을 받았습니다. MATLAB 스크립트를 옥타브로 전송하는 데 많은 시간이 걸리지 않았습니다. Meanwihile 나는 nabble에서 Jarno Rajahalme에 의해 수정되고 xtick 글꼴 크기를 변경하는 errorbar와 함께 마커를 공동으로 인쇄하는 데 특별한 문제가 있습니다. 따라서 약간의 노력으로 극복 할 수있는 버그가 여전히 있습니다. 문제가 발생하면 nabble 메일 링 포럼 (help-octave@octave.org)을 시도해 볼 수 있습니다. 그건 그렇고 우리 팀은 MATLAB에 적응하는 것처럼 (사용자 친화적) 적응할 수 없으므로 여전히 MATLAB을 사용하고 있습니다. MATLAB은 gnuplot에서 빌드되었으므로 버그를 수정하는 또 다른 방법은 생성 된 gnuplot 파일을 편집하는 것입니다. 내가 찾은 최고의 IDE는 QtOctave였으며 “
R 관련 : SciViews의 연구에 따르면 R의 성능은 MATLAB 및 옥타브보다 우수합니다. 저는 R에 대한 경험이 많지 않습니다. 저는 R의 EM 클러스터링에 대한 위키 북 장을 쓰기 위해 mclust 패키지를 연구했습니다. 그런데 그들은 매우 활동적인 커뮤니티를 가지고있는 것 같습니다. 따라서 IMO가 그렇게 표준화되지 않은 제안서에 대한 타사 패키지를 찾을 수 있습니다. 내가 찾은 최고의 IDE는 Eclipse, JGR (Java GUI for R) 및 emacs 용 StatET 플러그인이었습니다. 새로운 프로그래밍 언어를 배우는 데 시간이 걸리더라도 실험 그래픽과 일부 데이터 마이닝 분석을 만들기 위해 오픈 소스 플랫폼을 선택한다면 R을 시도 할 것입니다.
답변
Octave는 matlab에서 몇 가지 구문 개선을 제공합니다. 예를 들어 endif
endfor
, endfunction
대신 라고 말하면 end
디버깅이 훨씬 쉬워집니다.
Octave를 사용하면 동적으로 함수를 생성 할 수 있으며 스크립트 및 함수 파일에 여러 함수를 정의 할 수 있습니다. 그것은 matlab의 단일 파일-함수 접근 방식보다 훨씬 좋습니다.
마지막으로, 옥타브가 parcellfun
와 pararrayfun
완전히 결여 MATLAB에 매우 강력한 병렬 처리 도구는있다. 거기에있다 parfor
MATLAB에,하지만 내 생각에 그 일을하는 가장 좋은 방법이 아니다.
옥타브의 단점은 도구 상자에서 약간 뒤쳐져 있지만 비슷한 것을 찾을 수 있다는 것입니다. fsolve
그리고 lsode
어떤 이유로 옥타브에,하지만 더 강력한, 조금 느린 것 같다. 또한 일부 사람들에게 큰 불만은 심볼릭 링크와 DAQ 툴박스가 없다는 것입니다.
Python / Numpy는 확실히 가치가 있습니다. 더 강력하지만 구문은 더 복잡한 코드 조각을 목표로합니다.
답변
Octave에는이 없기 guide
때문에 GUI 구축이 매우 쉽습니다. 동료를 사용하여 비 MATLAB을위한 도구를 만들기 위해 정기적으로 가이드를 사용합니다.
답변
사용 사례의 경우 옥타브가 MATLAB보다 우수 할 수 있습니다.
-
C에 약간 더 가까운 코드를 작성할 수있는 구문이 있습니다. 즉 + =,-=, 기본 함수 매개 변수 값, 큰 따옴표로 묶인 문자열 리터럴 등 …
-
칩이 데스크탑 프로세서보다 느리다고 가정하면 속도는 문제가되지 않을 것입니다.
-
matlab보다 훨씬 빠르게 실행되기 때문에 테스트를 위해 쉘 스크립트에 통합하는 것이 더 실용적입니다.
-
프로토 타이핑의 경우 플로팅이 적절합니다. 사람들은 MATLAB의 스타일에 익숙합니다.
-
도구 상자가 상대적으로 부족하다는 것은 대상 플랫폼에서 사용할 수 없기 때문에 큰 문제가 아닙니다.
둘 다 사용하고 전환 할 때마다 다른 기능을 놓칩니다.
답변
수치 분석이 아닌 통계에 대해 오픈 소스 대안이 어떻게 작동하는지 보는 것은 흥미 롭습니다. R (통계의 옥타브)은 요즘 상업용 S-plus (통계의 MATLAB)보다 훨씬 인기가 있습니다. 다른 답변에서 찾은 matlab에서 벗어나지 않는 이유로 언급 된 문제는 R에도 적용 가능했습니다. 그러나 여전히 모두가 기여하기 시작했으며 이제 R은 더 나은 그래픽, 더 나은 패키지 및 더 이상 공급 업체 종속이없는 표준입니다.
따라서 죄수의 딜레마를 극복 할 수 있다면 MATLAB보다 옥타브를 선호 할 수도 있습니다.