옥타브와 MATLAB의 차이점은 무엇입니까? [닫은]


272

저는 Python, Ruby 및 GNU Octave 또는 Matlab을 배울 지 결정하려는 일부 C를 아는 프로그래머입니다. 나는 그것들이 공통점 이 많다는 것을 알고 있지만 구문이 얼마나 유사한 지 또는 심지어 데이터 구조가 어떤지 명확하지 않습니다. 모든 사람들은 자신들이 "유사하다"고 말하지만 실제로 자신이 얼마나 비슷한지를 말하는 사람은 없습니다. 위의 링크는 구문 상 유사하거나 동일한 여러 예를 보여줍니다. 이것이 전체 언어에 해당합니까?

이미지 분석 라이브러리를 사용하여 더 과학적인 컴퓨팅을 수행하기 위해 일반적으로 언어를 배우려고합니다. 프로그래밍 할 수있는 다른 언어가 많이 있다는 것을 알고 있지만 조언자들은 과학에서 MATLAB 또는 Octave를 아는 것이 중요하다고 말합니다.

또한 Matlab은 비용 가치가 있습니까? 돈이 많지 않지만 도서관이나 다른 곳에서 중요한 차이점이 있으면 돈을 찾을 수 있다고 확신합니다.


8
학생이기 때문에 학교에서 matlab을 무료 / 저렴한 가격으로 제공하는지 확인하는 것이 좋습니다. 저학년과 대학원은 모두 그렇게하므로 matlab으로 가기가 다소 쉽습니다.
Dougal

23
네,하지만 대학을 떠나 연구 센터에 갔을 때 그는 그것을 구입해야하며 그때까지는 대안이 아닌 Matlab 만 알게됩니다. 그래서 장기적으로 생각하면, 과학에서 그가 원하는 것처럼 간병인을 만들고 싶다면 이것을 무시해서는 안됩니다. 이러한 라이센스는 일반적으로 클러스터에도 사용할 수 없습니다.
carandraug

2
학생 인 동안 약 100 달러 (USD)의 MATLAB 라이센스를받을 수 있어야합니다. 다른 도구 상자 중 일부를 원할 경우 도구 상자 당 추가 29 USD입니다. 따라서 원하는 도구 상자가 무엇인지 알지 못하면 비용을 정당화하기가 어렵습니다.
벤 A.

23
+1 저는 오늘 기계 학습을 공부 하고 있으며 교사가 Octave 학습을 권장 했기 때문에 오늘 옥타브를 배우기 시작했습니다. (무료이기 때문에 METLAB이 비싸기 때문에 학생이 기계 알고리즘을 작동시키는 데 훨씬 더 생산적이기 때문에 먼저 Octave 또는 METLAB을 사용한 다음 일단 작동하면 Java 또는 C ++로 전환하십시오.
Anthony

7
나는 python + opencv를 사용하라고 조언한다
gukoff

답변:


235

차이점의 전체 목록을 제공하는 대신 문제에 대한 내 견해를 알려 드리겠습니다.

제공하는 위키 페이지를주의 깊게 읽으면 "Octave가 두 가지를 모두 지원하지만 MATLAB은 첫 번째를 요구합니다"등과 같은 문장을 자주 보게됩니다. 이는 Octave 개발자가 Octave 구문 을 MATLAB 보다 "우수" 하게 만들려고한다는 것을 보여줍니다 .

이러한 태도는 옥타브의 목적을 완전히 잃게합니다. Octave의 기본 개념은 m-code를 실행하기위한 오픈 소스 대안을 갖는 것 입니다 (또는 아래 주석을보아야합니다). 그것이 "더 나은"것으로 시도한다면, 그것은 다른 사람들을 위해 노력합니다 . 이것은 대부분의 사람들이 그것을 사용하는 이유와 일치하지 않습니다. 필자의 경험에 따르면 MATLAB에서 개발 된 런닝 작업은 정말 간단하고 짧은 작업을 제외하고는 한 번에 작동하지 않습니다. 크기 조정 기능의 경우 Octave에서 작동하기 전에 항상 많은 작업을 번역해야합니다. 처음부터 다시 쓰지 마십시오. 이것이 더 나은 방법 , 나는 정말로 보지 못한다 ...

또한 Octave를 배우면 Octave에서 MATLAB에서 허용되지 않는 많은 구문이 허용됩니다. 의미-Octave로 작성된 코드는 종종 많은 변환없이 MATLAB에서 작동하지 않습니다. 다른 방법으로도 호환되지 않습니다!

MathWorks에는 MATLAB을위한 많은 도구 상자가 있으며, Simulink 및 관련 제품이 옥타브와 실질적으로 동일하지 않습니다 (예, 모든 비용을 지불해야합니다) , 잘, 그것은 적어도 존재하는 여러 산업 표준, 입증 준수, 테스트 도구, 검증 도구, 요구 사항 관리 시스템, 보고서 생성, 훨씬 더 큰 커뮤니티 및 사용자 기반, 등 등 등 MATLAB) 단지 작은 부분이다 훨씬 더 큰 것. 옥타브는 ... 옥타브입니다.

그래서 내 충고 :

  • 학교에서 MATLAB 비용을 지불하는지 알아보십시오. 종종 그들은 할 것입니다.
  • 그렇지 않으면 돈을 긁어 모을 수 있다면 MATLAB을 구입하여 올바르게 사용하는 법을 배우십시오. 장기적으로는 더 나은 결정입니다.
  • 실제로 돈을 얻을 수 없다면 Octave를 사용 하고 MATLAB의 구문을 배우고 Octave 전용 구문을 피하십시오. (참고 사항 참조)

이게 왜 마지막이야? 과학에서는 종종 MATLAB으로 완전히 작성된 큰 코드 기반이 있기 때문입니다. 교수, 엔지니어, 학생, 전문 코더, MATLAB의 복잡한 세부 사항을 모두 알고 많은 옥타브를 아는 많은 사람들이 있습니다.

새 직장을 얻고, 새 사무실에서 모든 사람들이 스페인어를하는 경우, 그것은 그들이 간단하기 때문에, 그때부터 영어를 시작하는 것이 모든 사람의 요구하는 종류의 건방진의의 스페인어처럼 / 말을하지 않습니다. MATLAB 및 Octave와 동일합니다.

NB- 모든 다운 보터가 자신의 주장과 의견이 맞지 않는 이유에 대해 의견을 남길 수 있다면 좋을 것입니다.)

참고 : 옥타브는 "전통 모드"(옥타브를 시작할 때 --traditional 플래그를 포함하여)에서 실행될 수 있으며 특정 옥타브 전용 구문을 사용할 때 오류가 발생합니다.


25
JIT의 부족에 대해서는 Octave의 개발 버전에서 이미 구현되었습니다. 언제 릴리스 될지 모르겠지만 빌드했으며 루프 코드의 차이가 큽니다. Octave 전용 구문을 피하기 위해-Octave의 전통적인 옵션이 있습니다. Matlab 코드는 항상 Octave에서 실행된다고 말하지는 않지만 각 릴리스마다 훨씬 더 좋아지고 호환성은 우선 순위 중 하나입니다 (다른 Matlab 버전조차도 서로 호환되지 않습니다).
carandraug

14
그리고 당신이 부르는 것은 우수한 구문을 고수하고 있습니다 ... Matlab을 자유롭게 변경하고 구문을 추가하거나 다른 기능을 추가 할 수 있다면 그렇지 않습니까? 이들은 사용자가 구현 한 기능이며 호환성을 손상시키지 않습니다. 더 자주 그렇지 않다면, 새로운 사물은 그 근거로 거부됩니다. Matlab 언어는 Octave 언어의 하위 집합이라는 아이디어가 있습니다. 아이디어가 훌륭하다고 생각되면 커뮤니티 프로젝트이므로 커뮤니티가 개발해야하는 기능이 있기 때문에 참여해야합니다.
carandraug

19
@RodyOldenhuis 복제본이 아닙니다. 옥타브 개발은 그렇게 시작되지 않았으며, 패치를 계속 제출하는 사용자들에 의해 점점 더 그 방향으로 밀려 났습니다. sciencedirect.com/science/article/pii/S0959152412000911
carandraug

9
프로그래밍 도구 제작자가 버그에 대해 책임을지게 된 적이 있습니까?
Martin Beckett

6
@ carandraug : 아 지옥으로. 정확성은 모든 것보다 중요합니다 :)
Rody Oldenhuis

79

차이점 목록에 대한보다 완전한 링크는 Octave의 FAQ에 있습니다. 이론적으로 Matlab에서 실행되는 모든 코드는 Octave에서 실행되어야하며 Octave 개발자는 Matlab과의 비 호환성을 버그로 취급합니다. 따라서 첫 번째 질문에 대한 답은 이론적으로 그렇습니다. 물론 모든 소프트웨어에는 버그가 있으며 Octave 또는 Matlab (예, Matlab도)은 안전하지 않습니다. 당신은 그들을보고 할 수 있으며 누군가가 그들을 해결하려고

Octave에는 추가 기능이 있습니다 . 대부분은 다른 프로그래밍 언어에 익숙한 경우 코드를 더 읽기 쉽고 이해하기 쉽게 만드는 추가 구문입니다.

그러나 옥타브에는 금전적 비용보다 더 많은 것이 있습니다. 옥타브는 자유라는 의미에서 자유롭지 만, 자유의 여지가 있지만, 이것이 소프트웨어 자유에 관해 열광하는 곳이라고 생각하지 않습니다.

옥타브에서만 이미지 처리를하고 이미지 패키지가 내 요구에 적합하다는 것을 알았습니다. 그러나 나는 너의 것이 무엇인지 모른다. 따라서 비용 가치가 있는지에 대한 나의 대답은 아니오이지만 확실히 다른 사람들은 동의하지 않습니다.


23

MATLAB은 무엇보다도 상업용 제품입니다. 따라서 MATLAB의 모든 것이 기본적으로 작동합니다. 모든 핵심 기능은 견고하며, 특수 프로젝트를 수행하는 경우 MATLAB에 추가 기능이있을 수 있으며 추가로 도메인 별 .m 파일을 추가하는 추가 기능을 판매 할 수 있습니다. 저렴하지는 않지만 작동하며 불만없이 작업을 수행합니다.

옥타브는 항상 오픈 소스 정보를 원합니다. 무료이며 기회가있을 때마다 무료임을 상기시켜줍니다. 그것은 열정으로 Windows를 싫어하는 자원 봉사자들에 의해 개발되었습니다. 따라서 Octave는 Windows에서 굵게 실행됩니다. MATLAB의 많은 기능이 그대로 존재한다는 것은 놀라운 일입니다.

그러나 여기에 문지름이 있습니다. 사소하게 복잡한 것 이상을 시도 할 때마다 Octave는 갑자기 미묘하고 이해하기 어려운 방식으로 깨집니다. 죄송합니다. 터미널 드라이버가 OpenGL 레이어 깊숙이 넘쳤습니다. 인쇄 할 수 없습니다. 죄송합니다. 그림 플롯은 글꼴로 이상한 일을합니다. 왜 운이 좋은지 알아 내십시오. 죄송합니다. Octave와 다른 불분명 한 무료 소프트웨어 비트 사이에는 숨겨진 종속성이 있으므로 컴파일되지 않습니다. 그것이 무엇인지 알아내는 행운을 빕니다.

그리고 옥타브 응답은 헤이입니다! 무료 소프트웨어입니다! 모든 소스 코드가 있으며 모든 버그를 직접 해결할 수 있습니다! 시간과 자원이 무한하다면 자유 소프트웨어의 버그를 수정하는 데 모든 시간을 할애 할 수는 있지만 개인적으로는 그렇지 않습니다. 내가 학계에서 일했다면

따라서 핵심적으로 MATLAB을 선택할지 아니면 옥타브를 선택할지에 대한 문제는 하나의 질문으로 귀결됩니다. 흥미롭게도 상용 소프트웨어와 무료 소프트웨어 변형 중에서 선택할 때 그 질문은 항상 동일합니다.

그리고 질문은

시간보다 돈이 더 있습니까?


2
또 다른 질문은 당신이 일을하는 회사는 무엇입니까? 아마도 같은 이유로 Matlab 일 것입니다.
user276648

14

옥타브는 기본적으로 MATLAB의 오픈 소스 버전입니다. 그것은 단지 그렇게 쓰여졌다. MATLAB에는 사용하기가 매우 쉬운 GUI가 있지만 다음 OCTAVE의 안정적인 릴리스에는 불안정한 릴리스에서 테스트 한 GUI가 있으며 환상적입니다. 옥타브는 MATLAB의 개발에 수백만 달러의 자금이 지원되는 자원 봉사자 그룹에 의해 개발되고 유지되기 때문에 훨씬 더 버그가 많습니다. 나는 여전히 학생이며 MATLAB의 학생 버전을 사용하고 있지만 GUI가있는 안정적인 버전이 출시되면 Octave로 넘어갈 생각입니다.

MATLAB은 아마도 Octave보다 훨씬 강력하고 알고리즘은 더 빠르게 실행되지만 대부분의 응용 프로그램에서 Octave는 충분하며 내 생각에 Octave가 완전히 무료 인 놀라운 도구입니다.

아카데믹 버전을 사용할 수는 있지만 MATLAB을 사용한다고 말하지만 옥타브로 전환하는 것은 동일한 구문을 사용하므로 매끄럽게 진행되어야합니다.

마지막으로 SIMULINK의 문제가 있습니다. 시뮬레이션 또는 제어 시스템 설계를 원한다면 (다른 용도로는 백만 개가있을 수 있음) SIMULINK는 환상적이고 MATLAB과 함께 제공됩니다. Scilab은 분명히 '좋은'오픈 소스 대안이지만 시도하지는 않았지만 다른 것에 대해서는 가까운 것으로 생각하지 않습니다.

평화.


"... MATLAB 개발에 수백만 달러의 자금이 지원되는 자원 봉사자 그룹에 의해 개발 및 유지되기 때문입니다." 프로젝트의 금액은 품질과 버그가없는 인과 관계가 아닙니다. 그것들은 아마도 상관 관계가 아닙니다.
gagarine

"그들은 똑같은 구문을 사용합니다"아닙니다.
Cris Luengo

8

방금 Octave를 사용하기 시작했습니다. 그리고 사람들이 Matlab을 사용하는 것을 보았습니다. 위에서 언급 한 한 가지 주요 차이점은 Octave에는 명령 줄 인터페이스가 있고 Matlab에는 GUI가 있다는 것입니다. 저에 따르면 GUI를 갖는 것은 디버깅에 매우 좋습니다. Ocatve에서는 행렬의 길이 등을 확인하기 위해 명령을 실행해야하지만 Matlab에서는 좋은 인터페이스를 사용하여 모든 것을 멋지게 보여줍니다. 그러나 Octave는 무료이며 기본 작업에 좋습니다. 기본 작업 만 수행하거나 현재 필요한 것이 확실하지 않은 경우 옥타브로 이동하십시오. 실제로 필요하다고 느끼면 Matlab에 대한 비용을 지불 할 수 있습니다.


2
Octave에는 현재 베타 버전 인 GUI가 있습니다. 옥타브를 실행할 때 --force-gui 명령을 사용하십시오.
ig343

6
... Octave 버전 4부터 GUI가 기본 UI입니다.
Ruslan

7

Matlab을 그렇게 인기 있고 특별하게 만드는 것은 다른 분야의 우수한 도구 상자입니다. 주요 목표는 Matlab을 배우는 것이므로 Octave 또는 Matlab로 작업하는 경우 전혀 다르지 않습니다!

멋진 툴박스없이 Matlab을 구매하는 것 (기본적으로 전공에 달려 있음)은 실제로 합리적인 비용이 아닙니다!

옥타브로 시작하는 것이 좋으며 인터넷에서 Matlab에 관한 많은 튜토리얼을 따라갈 수 있습니다.


4

Rody Oldenhuis 답변에 추가하고 싶은 것은 많지 않습니다. 필자는 일반적으로 내가 작성한 모든 함수가 Matlab에서 실행되어야한다는 전략을 따릅니다.

다음 사용 사례에 대해 두 시스템에서 테스트 한 일부 특정 기능 :

a) 옥타브에는 라이센스 서버가 필요하지 않습니다 (예 : 기관에서 로컬 라이센스를 지원하지 않는 경우). 스크립트를 사용하는 시스템이 인터넷에 연결되어 있지 않고 매우 오랫동안 (실험실의 한 구석에) 실행되어 많은 다른 사용자가 사용하는 상황에서 한 번 사용했습니다. 비고 : 라이센스 비용이 아니라 기술 관련 문제입니다.

b) Octave는 Rasberry Pi ( http://wiki.octave.org/Rasperry_Pi ) 와 같은 다른 플랫폼을 지원 합니다.


3

중첩 함수 및 클로저는 이제 MATLAB을 포함한 많은 언어에서 지원됩니다. JavaScript는 클로저를 일류 디자인 원칙으로 홍보합니다.

안타깝게도 Octave는 클로저를 지원하지 않습니다 (어휘 범위 지정으로 중첩 된 함수).

http://osdir.com/ml/octave-bug-tracker/2013-06/msg00210.html 에 따르면 개발자가 원하지 않거나 올바르게 얻을 수 없다는 인상을 줄 수도 있습니다.

두 가지 방법으로 많은 코드가 손상됩니다. 해결 방법이 없습니다.


더 이상 이것이 정확하지 않습니다. 중첩 함수 는 Octave에서 구현되었으며 Matlab보다 다재다능하다는 것을 알았습니다. 예를 들어 스크립트에서 람다 이외의 함수를 선언 할 수 있습니다.
MayeulC

@MayeulC 더 다재다능한 부분은 실제로 두 가지 방법을 모두 삭감합니다.
Wolfgang Kuehn

0

옥타브와 MATLAB에는 많은 유사점이 있습니다. 그러나 Octave는 명령 행 인터페이스입니다. matlab에는 최상의 GUI가 제공되는 반면 명령 프롬프트에 각 명령을 입력해야합니다. 먼저 matlab 학생 버전을 사용하는 것이 좋습니다. 기본 레슨을 학습 한 후 gnu 옥타브 permentaly를 사용하십시오. 이제 gnu octave는 gui와 함께 제공되지만 현재 개발 버전입니다. GUI 옥타브, GUI 옥타브, xoctave (무료 아님), DomainMath IDE 등의 GUI 프론트 엔드가 있습니다.


2
옥타브 (3.7.5)의 개발 버전은 네이티브 GUI를 제공합니다.
kjetil b halvorsen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.