최근들어 MATLAB은 Python과 많이 비교 당하고는 한다. Python의 몇몇 패키지를 이용하면 MATLAB에서 수행할 수 있는 고수준 스크립팅 작업을 “무료”로 대체해 사용할 수 있기 때문이다. 왜 사람들은 비싸고, 대체 가능할 것으로 보이는 MATLAB을 사용하는 것일까?
우선 짚고 넘어가고 싶은 부분은 MATLAB은 과학/공학 분야에 있어 고수준의 작업을 수행할 수 있도록 만들어주는 “컴퓨팅 플랫폼 소프트웨어”인 반면 Python은 “범용 프로그래밍 언어” 라는 점이다. 물론 MATLAB을 범용 프로그래밍 언어처럼 사용할 수도 있고, Python을 과학/공학용 소프트웨어 처럼 사용할 수도 있다. 그러나, MATLAB으로 웹 개발을 주 목적으로 사용하지 않듯이1, Python을 과학/공학용 컴퓨팅 플랫폼으로 사용하는 것에는 한계가 있을 수 있다2.
이번 글에서는 매트랩이 과학/공학용 컴퓨팅 플랫폼 소프트웨어로써 어떤 이유에서 여러 산업 분야에서 사용되는지 알아보도록 하자.
MATLAB 언어는 행렬을 다룬다.
수학은 과학과 공학의 언어이다. 그 중 가장 중요한 초석은 “벡터”와 “행렬”을 주인공으로 하는 선형대수학이다. 어떤 프로그래밍 언어에서든지 행렬 연산을 수행할 수 있으나 MATLAB 언어 만큼 직관적으로 행렬 연산을 쉽게 수행할 수 있는 프로그래밍 언어는 보기 드물다.
참고를 위해 MATLAB과 Python에서 간단한 행렬 연산을 취하는 과정을 비교해보자.
MATLAB
% Create a matrix A
A = [1, 2; 3, 4];
% Create a column vector x
x = [1; 1];
% Compute Ax
Ax = A * x;
Python
import numpy as np
# Create a matrix
A = np.array([[1,2], [3,4]])
# Create a column vector x
x = np.array([[1], [1]])
# Compute Ax
Ax = np.dot(A, x)
MATLAB의 직관적인 벡터, 행렬 연산 Syntax 덕분에 MATLAB 유저들은 Syntax에 집중하는 것이 아닌 “계산 과정 자체”에 집중할 수 있게 된다.
고수준의 개발 언어
MATLAB은 고수준의 개발 언어이다. 쉽게 말해 MATLAB을 이용해 분석 및 개발 시 변수의 타입을 어떻게 정의할지, memory 관리는 어떻게 할지 등에 관해 신경쓰지 않아도 괜찮다. 뿐만 아니라 130여개에 달하는 수많은 Toolbox에서 사용자가 필요로 하는 함수들을 가져다 바로 사용할 수 있으며, 함수들에 대한 문서화와 예제가 잘 갖추어져 있어 어렵지 않게 사용 방법을 배울 수 있다.
또한, MATLAB App들을 이용하면 interactive하게 개발을 수행할 수 있다. 개인적으로는 MATLAB의 Machine Learning 앱들은 여러가지 알고리즘들을 손쉽게 구동할 수 있게 해주어서 전반적인 연구의 흐름을 잡는데 아주 큰 도움이 되었다.
이처럼 MATLAB 개발 환경을 활용하면 분석/연구/개발 자체에 집중할 수 있어 개발 프로세스의 속도를 향상시킬 수 있다.
MATLAB의 통합적인 개발 워크플로우
MATLAB의 가장 큰 장점 중 하나는 여러 단계의 개발 워크플로우를 통합적으로 관리할 수 있다는 점이다. 다시 말해, 연구 개발, 모델 설계, 시뮬레이션, 데이터 시각화, H/W 임베딩을 위한 코드 생성 등의 전 과정에서 MATLAB을 활용할 수 있다.
예를 들어 딥러닝 모델을 설계하고 이를 하드웨어에 배포해야 하는 과정을 생각해보자. MATLAB에서는 사용자가 고수준에서 알고리즘을 설계할 수 있도록 많은 패키지를 제공하고 있으며, 클라우드 병렬 연산 처리를 제공하여 아주 큰 딥러닝 모델의 설계에도 대응할 수 있도록 준비되어 있다. 또한, Coder 제품군을 이용하면 MATLAB 코드로 작성한 스크립트를 이용해 CUDA 코드 혹은 C/C++ 코드를 생성할 수 있고, SoC 디바이스에 직접 적용할 수 있는 HDL 코드도 생성할 수 있다.
전 세계적으로 검증된 과학/공학용 컴퓨팅 플랫폼
지금도 전 세계에서 MATLAB을 이용해 과학과 공학 분야의 수많은 결과물들이 쏟아져나오고 있다. 2022년 12월 기준 가장 최근 뉴스 중 인상깊은 것은 NASA에서 진행중인 아르테미스 프로그램에서 사용된 SLS (Space Launch System) 로켓 개발 시 MATLAB 제품군이 활용되었다는 것이다. 인터뷰에 따르면, SLS 로켓 개발 시 Simulink, Simscape Electrical, Stateflow 등의 제품군을 활용해 모델링하였으며, 이 외에도 모델 verification, 코드 생성등에 매트랩 제품군을 적극적으로 활용하였다고 밝혔다.
이 외에도 MATLAB을 활용한 여러가지 과학과 공학 분야의 결과물들을 MathWorks 홈페이지에서 확인할 수 있다.
참고문헌
- MATLAB이 Python 보다 좋은 7 가지 이유, MATLAB&Simulink 공식 블로그
- 7 Reasons MATLAB Is the Easiest and Most Productive Environment for Engineers and Scientists, MathWorks
- SLS 로켓의 도움으로 달로 가는 Orion 우주선
-
MATLAB Compiler SDK 제품과 MATLAB Production Server가 있긴 하지만 이것은 모두 binary 생성 및 deploy가 목적일 뿐 웹 개발 프레임워크를 이용한 웹 개발이라고 말하긴 어렵다. ↩
-
여러 오픈소스 소프트웨어를 함께 사용하여 개발하면 버전 간 호환성 이슈나 보안 취약성에 대해 고려하지 않을 수 없기 때문이다. 실제로 국내 대기업인 현대자동차에는 차량용 소프트웨어 개발 시 Open-Source Software 사용에 상당히 엄격하다. 제품 개발 과정에서 Open Source를 사용했을 때에는 해당 사실을 고지하고 있다. ↩