Octave보다 MATLAB을 선호하는 이유 / 언제?


82

우리의 슈 스트링 작업에서 우리는 임베디드 하드웨어에서 C 구현을 수행하기 전에 몇 가지 고급 언어로 알고리즘을 프로토 타입해야합니다.

지금까지이를 위해 MATLAB을 사용해 왔지만 라이선스 비용이 줄어들 기 시작했습니다. MATLAB 코드를 Octave로 이식하는 것을 고려 중입니다.

그렇게하지 않는 특별한 이유 가 있습니까? 특히 MATLAB 사용을 고집하는 외부 파트너가있는 경우 호환성이 깨질까요? 예상 할 수있는 성능상의 불이익이 있습니까?


7
마이그레이션 및 교육 비용을 고려해야합니다.
Daniel Moura

10
왜 파이썬이 아닐까요? stackoverflow.com/questions/1776290/… MATLAB 사용자를위한 NumPy : mathesaurus.sourceforge.net/matlab-numpy.html
Mikhail

5
@Mikhail : Matlab을 사용하는 파트너와의 인터페이스 때문입니다.
Jonas

2
@Jonas : 그들이 그 모두가 파이썬으로의 마이그레이션에 대한 이야기가 표시되는 경우 외부 파트너는 ... ... 너무 확신 할 수
미하일

답변:


52

2008 년에도 똑같은 일을 시도했습니다. 나는 다음과 같은 쇼 스토퍼를 빠르게 발견했습니다.

  • 도구 상자는 완전하지 않고 잘 테스트되지 않았습니다. 특히 내 작업이 크게 의존했던 이미지 처리 도구 상자 (큰 쇼 스토퍼는 imtransform이 구현되지 않았다는 것입니다).
  • Octave 디버거와 프로파일 러는 Matlab에 비해 원시적이었습니다.
  • 다른 사람들과 함께 일하면 그들을 변화시키기가 매우 어려울 수 있습니다.
  • 타사 도구 상자를 사용하는 경우 해당 도구 상자를 직접 사용하는 것입니다.
  • Octave의 플롯은 출판 품질이 아닙니다.

그러나 나는 일반적으로 Octave가 Matlab과 얼마나 호환되는지에 대해 깊은 인상을 받았다고 말해야합니다. Matlab을 기본적으로 사용한다면 운이 좋을 수도 있습니다. 마지막으로 이것은 2008 년이었습니다. 2 년 안에 상황이 많이 바뀔 수 있습니다.


8
문제가 MATLAB 사용자와 관련이 없다고 생각합니다. FOSS 대안이 있고 그러한 노력을하고자하는 사람들이 그렇게하는 것은 대단합니다. 사람들은 자신이하고 싶은대로 시간을 할애합니다. 특정 프로그램의 사용자를 비판하는 것은 유치합니다.
carlosdc 2013

2
관심이있는 사람은 Octave 3.8 Windows 설치 프로그램에 대한 링크를 따르십시오. mxeoctave.osuv.de
juliohm

2
이러한 문제는 bountysource.com/teams/gnu-octave/issues 웹 사이트를 통해 극복 할 수 있습니다. 비용은 하나의 Matlab 라이선스보다 10 배나 저렴합니다.
Sergei

2
2017 년부터 꼭 한번 시도해보세요. 전부는 아니지만 대부분의 MATLAB 스크립트가 (특정 도구 상자를 제외하고) 기본적으로 실행되므로 약간의 비 호환성을 수정하는 데 어느 날 오후를 보내야한다는 사실에 놀랄 것입니다. 라이선스가없는 오픈 소스 소프트웨어로 개발 한 결과에 비해 어느 날 오후는 언제입니까?
Hugo Raguet

24

내 머리 꼭대기에서 :

  1. 두 학기 전 기계 학습 과정에서 숙제를하려고했을 때 발견했듯이 Octave에는없는 도구 상자가 많이 있습니다.
  2. Octave는 훨씬 열등한 디버거를 가지고 있습니다. 함께 일하는 것은 거의 불가능했습니다.
  3. Matlab은 다양한 유형의 작업에서 훨씬 빠릅니다.
  4. Matlab의 플롯이 훨씬 더 좋습니다.
  5. Octave에는 기본 GUI가 없습니다. Octave 용 GUI가 있지만 Matlab의 기본 GUI보다 열등합니다.

포인트 # 5에 +1. 내가 설치할 수 있고 좋은 것은 말할 것도없고 안정적으로 작동하는 Octave 용 무료 GUI도 찾지 못했습니다. SciLab은 Matlab의 좋은 대안이 될 수 있지만 1-4 번 포인트와 관련하여 얼마나 좋은지 모르겠습니다.
Stefan Smith

15

옥타브와 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을 시도 할 것입니다.


10

Octave는 matlab에서 몇 가지 구문 개선을 제공합니다. 예를 들어 endif endfor, endfunction대신 라고 말하면 end디버깅이 훨씬 쉬워집니다.

Octave를 사용하면 동적으로 함수를 생성 할 수 있으며 스크립트 및 함수 파일에 여러 함수를 정의 할 수 있습니다. 그것은 matlab의 단일 파일-함수 접근 방식보다 훨씬 좋습니다.

마지막으로, 옥타브가 parcellfunpararrayfun완전히 결여 MATLAB에 매우 강력한 병렬 처리 도구는있다. 거기에있다 parforMATLAB에,하지만 내 생각에 그 일을하는 가장 좋은 방법이 아니다.

옥타브의 단점은 도구 상자에서 약간 뒤쳐져 있지만 비슷한 것을 찾을 수 있다는 것입니다. fsolve그리고 lsode어떤 이유로 옥타브에,하지만 더 강력한, 조금 느린 것 같다. 또한 일부 사람들에게 큰 불만은 심볼릭 링크와 DAQ 툴박스가 없다는 것입니다.

Python / Numpy는 확실히 가치가 있습니다. 더 강력하지만 구문은 더 복잡한 코드 조각을 목표로합니다.


1
방금 시도해 보았고 내가 말할 수있는 한 pararrayfun / parcellfun은 Windows에서 지원되지 않습니다 (기본적으로 Cygwin이 없으면 아닙니다) failed to open pipe: pipe: not supported on this system. 사전 빌드 된 Windows 바이너리를 사용하고 Octave_3.6.1_VS2010있습니다.
Amro

2
예, pararrayfun / parcelfun이 일부 자식 프로세스를 생성하여 작동하기 때문에 쉘 스크립트가 Windows와 Linux에서 실행되는 방식의 차이로 인한 것 같습니다. 이것이 Windows에서 어떻게 작동하는지 모르겠습니다. Windows 바이너리가 셸에서 실행되는지 또는 에뮬레이션되었는지조차 확실하지 않습니다.
user1240280

1
너무 나쁜 cellfun의 (휴대용) 병렬 버전 / arrayfunc 좋은 아이디어처럼 보인다 ... 어쩌면 MATLAB해야하는 너무 :
암로

@ user1240280 : 스크립트 내에서 함수를 정의 할 수 있다는 것은 IMHO가 Matlab에 비해 Octave의 큰 장점입니다. 전체 프로그램을 모듈 식으로 작성하고 하나의 파일에 보관할 수 있으므로 자신이나 다른 사람에게 쉽게 보낼 수 있습니다. 그러나 Octave에 GUI가 없다는 것은 큰 단점입니다.
Stefan Smith

@stefan smith : Octave는 이제 네이티브 GUI를 가지고 있지만 아직 실험적이지만 최근 경험으로 볼 때 꽤 유용하고 다소 안정적입니다. 당신은 그것을 밖으로 시도 할 수 있습니다octave --force-gui
Legionair

9

Octave에는이 없기 guide때문에 GUI 구축이 매우 쉽습니다. 동료를 사용하여 비 MATLAB을위한 도구를 만들기 위해 정기적으로 가이드를 사용합니다.


6
Octave에 상응하는 가이드가 있습니까? 그게 제가 비추천을받은 이유인가요?
Doresoom

8

사용 사례의 경우 옥타브가 MATLAB보다 우수 할 수 있습니다.

  • C에 약간 더 가까운 코드를 작성할 수있는 구문이 있습니다. 즉 + =,-=, 기본 함수 매개 변수 값, 큰 따옴표로 묶인 문자열 리터럴 등 ...

  • 칩이 데스크탑 프로세서보다 느리다고 가정하면 속도는 문제가되지 않을 것입니다.

  • matlab보다 훨씬 빠르게 실행되기 때문에 테스트를 위해 쉘 스크립트에 통합하는 것이 더 실용적입니다.

  • 프로토 타이핑의 경우 플로팅이 적절합니다. 사람들은 MATLAB의 스타일에 익숙합니다.

  • 도구 상자가 상대적으로 부족하다는 것은 대상 플랫폼에서 사용할 수 없기 때문에 큰 문제가 아닙니다.

둘 다 사용하고 전환 할 때마다 다른 기능을 놓칩니다.


6

수치 분석이 아닌 통계에 대해 오픈 소스 대안이 어떻게 작동하는지 보는 것은 흥미 롭습니다. R (통계의 옥타브)은 요즘 상업용 S-plus (통계의 MATLAB)보다 훨씬 인기가 있습니다. 다른 답변에서 찾은 matlab에서 벗어나지 않는 이유로 언급 된 문제는 R에도 적용 가능했습니다. 그러나 여전히 모두가 기여하기 시작했으며 이제 R은 더 나은 그래픽, 더 나은 패키지 및 더 이상 공급 업체 종속이없는 표준입니다.

따라서 죄수의 딜레마를 극복 할 수 있다면 MATLAB보다 옥타브를 선호 할 수도 있습니다.


4
답변이 아닌 주석에 넣어야합니다.
Dima

5

MATLAB에는 MATLAB과 Octave의 차이점 목록이 있는 훌륭한 WikiBook이 있습니다 .

제 경험상 핵심 MATLAB은 Octave로 잘 이식되었지만 도구 상자에는 다양한 수준의 호환성이 있으므로 정확히 무엇을 코딩하려고하는지에 따라 결정이 달라집니다.

Octave에 부족한 것, AFAIK는 .NET 코드 및 gui 빌더와의 긴밀한 통합입니다 guide(옥타브에서 사용할 수있는 다른 많은 GUI 구축 도구가 있지만).

또한 다른 사람들이 지적했듯이 MATLAB으로 지불하는 비용의 대부분은 매끄러운 인터페이스와 디버깅 / 프로파일 링 도구입니다. 숙련 된 코더는 아마도 대안으로 관리 할 수 ​​있지만 초보자는 어려움을 겪을 수 있습니다.


3

Octave는 Matlab에없는 언어 구조를 지원합니다 (예 : 자동 증가 연산자, do-until 문 등). 이로 인해 Octave에서 개발 한 코드 (Matlab의 한계에 익숙하지 않은 사람에 의해)를 Matlab 환경으로 이식하는 것이 때때로 짜증이납니다.

Octave FAQ 에는 몇 가지 다른 제한 / 차이가 있습니다.


2

여유가 있다면 Matlab을 Octave보다 확실히 선호해야합니다.

Octave에 대한 경험은 많지 않았지만 코드가 Matlab 도구 상자, 멋진 플롯 또는 Matlab GUI를 사용하는 경우 문제가 발생할 것으로 예상됩니다.

나는 그것이 OpenOffice 대 MS Office와 같을 것으로 기대합니다. 대부분 호환되지만 두통을 줄만큼 충분히 다릅니다.


0

선형 회귀 및 2 차 프로그래밍 응용 프로그램을 Octave에 성공적으로 이식했습니다.

선형 회귀 (백 슬래시 연산자)는 조정없이 작동했습니다. 2 차 프로그래밍의 경우 fmincon () 에서 sqp () 로 전환해야 비슷한 결과를 얻을 수 있습니다.

그럼에도 불구하고 Octave의 툴박스와 GUI는 비록 지난 2 년 동안 빠르게 발전해 왔지만 실제로는 덜 성숙했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.