Loading
2014. 8. 10. 04:17 - 성돌

[Mathematica] 많은 실험데이터를 분석하는 코드




여기서는 저번 포스팅인 다른 Mathematica파일을 불러와서 실행시키는 방법에 이어서... 


많은 실험데이터를 하나의 분석코드로 분석하게 하는 코드에 대해서 업로드하고자 한다.


사실, 이건 내가 실험데이터를 분석할 때 내가 쓸려고 만든건데....

다른 사람들에게도 도움이 될 수 있지 않을까하는 생각으로 포스팅한다.


내가 실험데이터를 분석하는 방법을 우선 설명하자면...

난 주로 실험 parameter들을 다른 Mathematica 노트에 저장한다.

예를 들어, "실험데이터1.nb"와 "실험데이터2.nb"에 실험 정보들... 밀도라던가 속도라던가... 

여러가지들을 저장하고


그 다음, 내가 짠 Data analysis 코드에 의해서 분석을 하는 것이다.


그런데, 앞서 포스팅의 분석코드는 한 번의 하나의 실험데이터밖에 분석하질 못한다.


한 번에 많은 데이터를 하나의 분석코드로 분석하려면, 앞서 포스팅Do명령어를 이용하면 가능하다.


 우선 코드를 먼저 보여주고 설명을 이어서 하도록 하겠다.

아래가 코드이다.



Multiple.nb


그리고 아래처럼 분석코드 맨 밑에 

앞서 정의했던 CountNum을 이용해서 열린 실험데이터노트들을 하나씩 닫아주고,

BlockClearAll을 사용하여, 

ExperimentNameList외의 모든 변수들 초기화시키자.


Multiple2.nb


Block과 ClearAll을 해주는 이유는

첫번째 실험데이터에 의한 분석값이 두번째 실험데이터에 의한 분석값에 영향을 미치지 않게 

원천차단하는 것이다.




물론, 한글로 내가 표시한 부분만 바꿈으로 사용할 수 있게 코드를 만들어 놓았지만,


코드에 대해서 설명을 순서대로 하자면,


[1] ExperimentNameList에 리스트의 형태로 실험데이터 모든 파일명들을 입력한다.

(모르겠으면, 링크 참고.)


[2] Do명령어에 의해서 파일명들을 하나씩 순서대로 ExperimentNameAmongList에 입력시킨다.

(모르겠으면, 링크 참고.)


[3] 현재 파일명(ExperimentNameAmongList)에 의해 실험데이터 파일을 열고 nbi으로 입력시키고 실행한다.

(nbi는 nb1,nb2,nb3...등으로 앞서 StringJoin에 의해 하나씩 순서대로 정의되었다.)

(모르겠으면, 링크 참고.)


[4] 분석코드를 nbA로 불러와서 nbi의 데이터에 의한 분석을 한다.


[5] Do명령어에 의해서 다음 파일로 넘어가서 [2]스텝으로 돌아간다. 

그리고 모든 파일을 다 분석할 때가지 계속된다.


코드를 실행하면, 

Mathematica가 데이터코드들을 분석코드보다 먼저 열고 닫아버려서

코드가 잘못되었나를 생각해볼 수 있겠지만

(무슨 말인지는 실행해보면 암..)

별 문제없으니 걱정말고 사용하자.