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);

 


오늘의 포스팅에서는 function handle 사용법의 추가 적인 내용들에 대하여 정리하겠습니다.

 

여러 함수에 대해 똑 같은 값을 적용할 때에는 function handle 을 struct classcell class 의 형태로 만들어서 이용할 수가 있습니다.



다음 수식에 대하여 struct 의 형태로 function handle 을 구성하고 그에 따른 값을 알아보죠.

 



 

다음과 같이 struct 의 형태로 표현 할 수 있고, x=-1:0.5:1 에 대한 각 수식의 값을 한번에 구할 수가 있습니다.

 

struct 에 한번에 똑 같은 값 또는 함수 등을 적용 할 때는 structfun() 함수를 이용 합니다.

 

 

위 코드를 실행하면 다음과 같은 결과를 얻을 수 있습니다.

 

ans =

f: [1 0.2500 0 0.2500 1]

g: [-1 -0.1250 1 3.1250 7]

h: [-0.8415 -0.4794 0 0.4794 0.8415]

  


 

위 수식에 대하여 cell 의 형태로 표현하고 위 x 의 범위에 대한 값을 구해 보죠.

 

cell 에 한번에 똑 같은 값 또는 함수 등을 적용 할 때는 cellfun() 함수를 이용 합니다.

 

 

위 코드에 따른 결과는 다음과 같습니다.

 

D{1} =

1.0000 0.2500 0 0.2500 1.0000

D{2} =

-1.0000 -0.1250 1.0000 3.1250 7.0000

D{3} =

-0.8415 -0.4794 0 0.4794 0.8415

  


 

마지막으로 function handle 을 두 번 이용해서 다음 수식을 표현해 보겠습니다.

 

 

적분은 quad() 함수를 이용하겠습니다.

 

quad() 함수의 사용 방법에 대해서는 아래 포스팅을 참조 하시기 바랍니다.

   

 

@ 을 두 번 써서 위 식을 표현 할 수 있습니다.

 

f = @(a,b) (quad(@(x) (x.^2 + b*x + 4), 0, a))

 

임의의 a, b 값에 대해 다음과 같은 결과가 나오는 것을 확인 할 수 있습니다.

 

>> f(1,2)

ans =

5.3333

 

>> f(4,0)

ans =

37.3333

 


+ Recent posts