MATLAB 을 사용하여 압축을 하고 싶으면 zip() 이라는 함수를 사용 합니다.

 

현재 폴더의 하위 내용들을 압축하고 싶은 경우 보통은 현재 폴더를 압축하곤 하는데 이렇게 하려면 현재 폴더가 아닌곳에 zip 파일을 저장해야 합니다.

 

오늘은 현재 폴더 하위의 내용들을 압축하는 방법에 대해 소개하려 합니다.

 

현재 폴더의 내용을 검색하는 방법은 dir() 이라는 함수를 사용합니다. dir() 함수는 recursive 한 파일 검색은 되지 않습니다.

 

recursive 한 파일 검색을 하고 싶다면 아래 포스팅을 참조하시면 됩니다.

 

http://iamaman.tistory.com/757

 

아무튼 오늘은 그냥 현재 폴더에 대해서만 검색 할것이므로 dir() 함수를 사용합니다.

 

그런데 dir() 함수를 사용하여 현재 폴더를 검색하면 '.', '..' 라는 폴더가 검색 됩니다.

 

바로 현재와 상위 폴더 입니다.

 

현재 폴더의 하위 내용들을 압축하고 싶기 때문에 그래서 이 부분들을 제외하고 압축을 해야 합니다.

 

위 소개한 부분들을 제외하고 압축을 하는 방법은 아래 코드와 같습니다.

 

a= dir('.');

fileAll=cell(length(a),1);

 

for n=1:length(a)

    if ~(strcmp(a(n).name,'.') || strcmp(a(n).name,'..'))

        fileAll{n}=a(n).name;

    end

end

 

AllFile=fileAll(~cellfun('isempty',fileAll));

zip('CurrentFolder.zip',AllFile);

 


MATLAB 함수 내부의 변수는 함수 사용 후에는 메모리 상에서 지워지게 됩니다.

 

하지만 경우에 따라 함수 내부에서 변수가 계속 유지 되게 할 필요가 있는 경우가 있습니다. 이러한 경우에 persistent keyword 를 사용합니다.

 

다음 예를 통해 persistent 에 대해 알아보죠.

 

아래 그림의 y=persistent_func(a,b) 함수는 a, b 값 입력을 받아서 a+b+c 값을 출력하는 함수 입니다.

 

 

c 값에는 함수 내부에서 메모리상에 계속 남아 있도록 하기 위하여 persistent 로 설정했습니다.

 

그리고 초기값 설정을 위하여 isempty() 함수를 써서 c 값이 비어 있으면 초기값을 설정하도록 하였습니다.

 

위 함수에 대하여 다음과 같이 사용해 보도록 하겠습니다.

 

 

함수 내부에서 c 값이 계속 유지가 되는 것을 확인 할 수 있습니다.

 

 

연관 글: 2011/03/26 - [MATLAB] - MATLAB global keyword



  1. 박지연 2011.10.20 11:28

    매틀랩 공부하다가 우연찮게 이곳에 오게되었는데요 설명 너무잘해주셔서 감사해요
    c값 출력할때
    c:%d\n' 이건 어떤 표현인가요?
    답변 부탁드릴게용 ^^

    • 남성 2011.10.20 23:33 신고

      방문해 주셔서 감사합니다.

      c: 는 그대로 화면에 출력하는 부분이구요.

      %d 는 decimal 값 즉 10진수 정수로 표현하라는 거구

      \n 은 줄 바꿈 하라는 겁니다.

+ Recent posts