문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 MATLAB (문단 편집) === 타 프로그래밍 언어 및 [[수치해석]] 소프트웨어와의 비교 === * [[Microsoft Excel|엑셀]]: 프로그래밍에 익숙하지 않거나 계산이 간단하다면 당장 MATLAB 코드를 두드리기보다 엑셀을 여는 것이 더 빠를 것이다. 하지만 계산이 복잡해지면 엑셀로 코딩하는 것은 비효율적이고, 시각화 기능도 다양하지 못하다. 간혹 엑셀로 편미분방정식(!)을 푸는 고수들도 있기는 하지만, 이건 '내가 이렇게 엑셀을 잘 다룬다'고 뻐길 때나 잠깐 해보는거지 그냥 매트랩을 쓰는 게 낫다. 더군다나 계산해야 할 데이터가 너무 많다면 엑셀이 뻗어버릴 수 있다. * [[C언어|C]]: 전자공학전공의 소프트웨어 개발의 주 언어인 만큼 많이 사용된다. 주로 MATLAB 프로토타입 코드를 기반으로 C언어 코드로 재구현하는 형태로 개발하게 된다. MATLAB으로 만든 프로토타입 알고리즘을 C로 자동 포팅하는 것은 거의 사용하지 않는다. C 함수를 MATLAB이나 SIMULINK에서 불러와 평가하는 방식으로 개발할 수도 있다. * [[C++]]: [[금융공학]]이나 상용 애플리케이션 개발처럼 빠른 속도가 요구되는 경우 C++이 낫다. C++도 간편한 라이브러리가 많이 나왔다. 하지만 C++은 기본적으로 번거롭기 때문에 [* 그나마 선형대수 정도만 필요하다면, 표준 라이브러리에 가까운 BOOST/Ublas를 사용하면 되니, 할 만하다. 하지만, 본격적인 수치해석을 제공하는 신뢰할만한 오픈소스 C++ 라이브러리는 없다.] 다수의 인원이 투입되고 이미 검증된 알고리즘을 최적화하는 프로젝트에 자주 사용될지라도 개인이 어려운 공학 공부를 하면서 사용하는 경우에는, 메모리 관리까지 신경써야 하는 불편한 점을 감수하기 힘들다. 현업에서 MATLAB 라이브러리 및 MATLAB DLL을 사용하는 경우가 생각보다 많은데, MATLAB이 [[JVM]] 기반으로 개발되어 있기 때문에, 수많은 에러를 뚫고 개발을 진행하게 되며, C/C++로 옮기는 이유인 성능향상의 이유가 퇴색되어 버리는 경우가 많다. 또한 MATLAB의 경우 기본적으로 허수를 가지고 있기 때문에, 허수를 놓치는 경우가 많으므로 주의가 필요하다. * [[Java]]: 딱히 비교/경쟁 대상이 아니다. 자바는 안드로이드 앱 개발, 웹 개발, 서버 사이드 프로그래밍 등 많은 곳에서 애용되지만 MATLAB와는 달리 공학, 과학적 계산을 목표로 할 때는 별로 쓰이지 않는다. * [[포트란]]: [[C언어|C]]/[[C++]]와 마찬가지로 오래된 언어라 코드 짜기가 번거로운 대신 속도가 빠르다. [[전산유체역학]] 등 속도가 매우 중요한 분야에서는 아직도 현대화된 [[FORTRAN]]을 쓰는 경우도 있다. * [[Python]]: 유명 라이브러리를 사용할 수 있다. SciPy, [[NumPy]] 등의 수치해석 패키지로 선형대수 계산을 할 수 있고, matplotlib으로 시각화를 할 수 있다. MATLAB이 주요 알고리즘을 다 바이너리로 만들고 m-file을 wrapper만 남겨놓는 등 속도 향상을 위한 노력을 많이 해서 Python보다 빠르다고 했지만, [[NumPy]] 패키지도 기본 루틴은 C로 짜여 있고, 속도는 지금도 앞으로도 꾸준히 논란거리일 것이다. 오픈소스 개발자들이 많은 함수명을 MATLAB과 비슷하게 작명하였기 때문에 둘 중 하나만 잘 배워도 나머지를 익히기는 쉽다. * [[R(프로그래밍 언어)|R]]: 가끔 MATLAB 대용으로 쓰인다. 다만 R은 아무래도 통계분석에 특화된 느낌이 강해서 완전히 MATLAB을 대체하기는 힘들다. * [[Julia]]: Julia의 탄생 목적 중 하나가 과학, 공학을 위한 수치 해석용 언어이기 때문에 MATLAB의 좋은 대안이 될 수 있을 것이다. MIT에서 수행한 벤치마크에서 MATLAB을 성능으로 뛰어넘기도 하였다. 다만 2012년에 발표된 신생 언어이기 때문에 라이브러리가 모두 개발되고 성숙하기까진 시간이 걸릴 것이다. * [[매스매티카]]: 수식을 해석적 방법 [* 4차 방정식의 일반해를 계수에 대한 표현으로 나타내거나 다항식, 부정적분 등을 수식적으로 푸는 것.]으로 풀 때 유용하므로 수학, 물리학 연구 및 학부생에게 유용하다. 대체로 계산 과학 관련 커뮤니티 에서 MATLAB은 부동소수점을 이용한 수치계산에서 매스매티카보다 더 빠른 속도를 보이고, 매스매티카는 부정적분 해석, 다항식 풀이 등 수식 해석에서 MATLAB보다 성능이 더 뛰어나, 일장일단이 있다고 동의하는 분위기이다. 시뮬레이션 코드를 실행하는 속도나, 제품의 실제 개발이 더 중요한 연구에서는 해석적 방법보다는 수치적 방법을 쓰게 되므로 MATLAB이 더 유용하다. 공대 연구나 기업에서는 대부분 이쪽이다. 다만 학부 수준에서는, 아무리 공과대학이라도 배우는 내용은 죄다 이론이나 수식 전개이고, 수치해석 용으로도 스케일이 큰 문제를 풀어야 할 일은 절대 없기 때문에 [[매스매티카]]나 [[메이플#s-3]]을 사용한다고 특별히 부족한 기능은 없을 것이다. 심지어 많은 공대 학부생들이 솔루션을 찾아 다닌다고 [[Wolfram Alpha]]를 쓰는 것을 보면, 매스매티카가 더 유용할 지도 모른다. 다만, 대부분의 대학교 공과 수업은 매스매티카보다 MATLAB을 선호하는 편이다. 속도 논란에 관해서는, 물론 매스매티카가 다중 적분식으로 가면 느려지긴 하는데, 그건 MATLAB이 정확도를 크게 요구하지 않다 보니 항을 100분할 정도 해서 그냥 사다리꼴 등으로 계산해버리는 편법을 써서 그렇다. 공학적인 측면에서는 다수의 경우에 수학적인 엄밀함을 지키는 것보다, 다소 어기면서 계산적인 효율성을 추구하는 것이 더 낫다. [* 기계공학 분야에서는 일차적인 정확도가 확보된다면(ex. 80%) 그 이후에는 실행 속도가 더 중요한 경우가 대다수이다. 예를 들어 자동차 내부에 들어가는 전자 제어기는 제어기 특성에 따라 느려도 0.01초, 보통 0.001초마다 제어 결과 값을 산출하는 것이 제한 조건으로 적용되어 있다. 차체 내부의 제어기가 주어진 제어 주기를 만족하지 못하면, 엔진 사이클이 흐트러지거나, 차가 울컹거리는 거나, 조향이 이상하게 되는 것을 느끼게 된다.] * [[메이플#s-3]]: 매스매티카와 마찬가지로 수식 분석 기능이 필요할 때 대체할 수 있는 소프트웨어. * [[GNU Octave]]: 비싼 라이센스 가격의 MATLAB을 대체하기 위해 가장 대표적인 언어. MATLAB과 문법 차이점이 적어 적응하는 데 시간이 많이 걸리지 않는다는 장점이 있다. 하지만 성능이 나쁘고 툴박스의 편리함을 누릴 수도 없으며 문법 역시 미묘하게 차이가 나서 완벽하게 이식 가능한 것도 아니라는 단점이 있다. * [[SciLab]]: 신호 처리 등에 대체가능하다. 단 SciLab은 Octave에 비해 MATLAB 문법 호환성이 다소 낮다. * [[FreeMat]]: 인터페이스가 MATLAB과 '''매우''' 유사하고 MatLab 기능의 95% 정도를 지원한다. 단 한글을 칠 수 없다. [* 한/영 입력을 한글로 한 상태에서는 키보드의 어떠한 자음, 모음 키를 누른다 해도 아무것도 입력되지 않는다.] * [[Verilog]], [[VHDL]]: MATLAB의 자동 코드 생성 기능을 사용해 Verilog나 VHDL 코드를 생성하는 경우도 있지만, MATLAB으로 시스템을 프로토타이핑한 후 직접 HDL 코드를 짜서 하드웨어를 구현하는 경우가 많다. 각종 [[오픈 소스]]를 사용하면 공짜로 MATLAB을 대체하는 것 자체는 가능하다. 다만, MATLAB의 철학 자체가 '돈은 얼마든지 낼테니 Mathworks가 최대한 유용한 기능을 많이 갖추어 놓아라'라는 식이라면, 오픈소스 진영에서는 공짜로 쓰는 대신에 사용자가 여러 라이브러리 사이의 버전 충돌이라던가 미비한 기능에 대한 보완 대책을 사용자 스스로 해야하는 등 불편한 점이 많다. 특히 라이센스가 [[GPL]]일 경우 상업적인 개발에 사용한다면 카피레프트에 주의해야 한다.저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기