예전에는 Visual Studio Express 를 설치해서 MATLAB 에 필요한 C/C++ 컴파일러를 설치 했었지만 최근에는 Mingw 를 설치하면 되더군요.

아래 주소에서 Add-On 을 통해 MinGW-w64 Compiler 설치하는 방법을 소개 했었는데~

http://iamaman.tistory.com/1664

현재 회사 컴퓨터의 MATLAB 라이센스 Software Maintenance 가 유지되고 있지 않아서 Add-On 에서 TDM-GCC 설치를 할수 없게 막아 놨더군요.

아래 주소에서 TDM-GCC 를 설치했고 path 환경변수도 분명 등록을 했는데 MATLAB 에서 mex -setup 이 안 먹어서 어케 하나 하다가~

http://tdm-gcc.tdragon.net/download

아래 주소에서 MATLAB 에 TDM-GCC 를 설치하는 정확한 방법을 찾아서 기록 겸 공유 합니다.

https://stackoverflow.com/questions/39140398/install-mingw-w64-compiler-matlab2013a-or-2016a

1. 위와 같은 방법으로 TDM-GCC 설치후에~

2. 관리자 모드 CMD 에서

setx MW_MINGW64_LOC "C:\TDM-GCC-64" /m

3. MATLAB Command Window 에서

>> setenv('MW_MINGW64_LOC','C:\TDM-GCC-64')

>> mex -setup

MEX이(가) C 언어 컴파일에 'MinGW64 Compiler (C)'을(를) 사용하도록 구성되었습니다.

경고: 2^32-1개의 요소를 초과하는 MATLAB 변수를 지원하기 위해 ...(중략)


% 컴파일러 빌드 확인

>> copyfile(fullfile(matlabroot,'extern','examples','mex','yprime.c'),'.','f')

>> mex yprime.c

'MinGW64 Compiler (C)'(으)로 빌드됩니다.

MEX가 성공적으로 완료되었습니다.

>> yprime(1,1:4)

ans =

2.0000 8.9685 4.0000 -1.0947



오늘은 MATLAB 을 이용하여 파일 또는 디렉토리 이름을 다룰 때 유용한 몇 가지 함수들에 대해 설명 드리겠습니다.

 

파일 이름을 다루다 보면 파일 이름부분과 확장자 부분으로 구분하고 싶을 때가 있습니다.

 

이런 경우에는 fileparts() 라는 함수를 사용 할 수 있습니다.

 


다음과 같은 형태로 구성되는데요~

 

 

 

[pathstr, name, ext] = fileparts(filename)

 

보시는 바와 같이 path, 파일 이름, 확장자로 구분해 줍니다.

 

사용 예는 다음과 같습니다.

 

위에서는 파일이름을 분리 했으니깐 파일이름을 합치는 방법에 대해 알아보죠.

 

이름을 합치는 경우에는 fullfile () 이라는 함수를 제공해 줘서 path, 파일 이름, 확장자를 편리하게 합칠 수 있습니다.

 

위에서 나누었던 파일 이름을 fullfile () 함수를 이용하여 합쳐 보죠~ 


 

다음으로 filesep 에 대해 설명 드리겠습니다.

 

Unix 나 맥 os 같은 경우에는 파일 구분자가 / 이지만 윈도우의 경우에는 \ 입니다.

 

그래서 같은 파일을 이종의 운영체제에서 이용하는 경우에는 에러가 발생할 여지가 있죠.

 

따라서 script 파일에서 파일 이름을 다룰 때는 filesep 를 이용해서 운영체제에 따라 자동으로 파일 구분자가 지정되도록 하는 것이 좋습니다.

 

위에서 fullfile() 함수를 이용해서 합쳤던 파일 이름을 다음과 같이 filesep 를 이용하여 합치는 예는 다음과 같습니다.

 

다음으로 string 으로 된 path 를 regular expression 을 이용하여 간단하게 각 디렉토리 별로 구분하는 방법에 대해 알아보겠습니다.

  

위 예에서 s 라는 변수에는 각 폴더와 파일 이름이 filesep 를 구분자로 해서 나누어지고 그 결과가 cell 타입으로 저장됩니다.

 

나누어진 디렉토리와 파일 이름을 다시 합치고 싶을 때는 위 예에서 처럼fullfile(s{:}) 하시면 되고요~

 

여기서 s 라는 변수가 cell 타입이기 때문에 각 값에 접근하기 위해서 중괄호를 이용한 것입니다.

 

마지막으로 소개해 드릴 함수는 현재 실행되는 파일의 이름을 나타내 주는 mfilename 함수입니다.

 

간단하게 예를 보시면 이해가 되실 듯 하네요.



 

위의 ABC.m 파일에서 mfilename 함수에 의해 command 창에 다음과 같이 현재 실행중인 파일의 이름이 나오고




fullpath 를 알 고 싶을 때는 위 예에서처럼 mfilename('fullpath') 라고 작성하면 됩니다.


+ Recent posts