2015년 4월 3일 금요일

Error : Too many unprocessed floats(LaTex)

LaTeX can, by default, only cope with 18 outstanding floats; any more, and you get the error “too many unsuppressed floats”. This package releases the limit; TeX itself imposes limits (which are interdependent of the help offered by e-TeX). However, if your floats can’t be placed anywhere, extending the number of floats merely delays the arrival of the inevitable error message.
(http://tex.stackexchange.com/questions/46512/too-many-unprocessed-floats#comment372412_46514)

2015년 3월 23일 월요일

2015년 3월 10일 화요일

opengl install windows 32bit

http://www.xmission.com/~nate/glut/glut-3.7.6-bin.zip
glut.h -> C:\Program Files\Microsoft SDKs\Windows\v7.0A\Include\gl
glut32.lib -> C:\Program Files\Microsoft SDKs\Windows\v7.0A\Lib
glut32.dll -> C:\Windows\System32

Octomap for windows

Builiding Octomap 1.6.1 on Windows + Visual Studio 2010 (32 bit)

  • Install Qt library for [Windows + VS2010]
    • Tested Qt Library version 4.8.0 and 4.8.4
  • Build QGLViewer as suggested in the Octomap Github page
  • Configure and Generate OctoMap project using Cmake-gui application
    • You have to use the same Qt library version for step 2 and step 3
    • Ignore the warning messages when generating the Octomap project
  • Open the Octomap-distribution Visual Studio project
  • Change the following dependency names in dynamicedt3d, exampleEDT3D, exampleEDT3Octomap , octovis, octovis-shared project
    • "liboctomap.so.lib"  to "octomap.lib"
    • "liboctomath.so.lib" to "octomath.lib"
  • For octovis-shared project,
    • Add Qt library (e.g. C:/Qt/4.8.4/lib") folder to Additional library directories
    • Add "QtCore4.lib, QtOpenGL4.lib, QtGui4.lib, QtXml4.lib" to Additional depedencies list
  • Add the following function in compare_octree.cpp

    bool isnan(double x) 
    {
        if (!(x >= 0) && !(x <=0))
            return true;
        else
            return false;   
    }
    
  • Edit the following line

    if (std::isnan(kld))
    
    to

    if (isnan(kld))
    
  • Add Qt binary path (e.g. C:/Qt/4.8.4/bin) to your PATH variable
  • Copy QGLViewer2.dll and QGLViewerd2.dll to a system folder (e.g. C:/Windows/System32) or a folder where your application file is located
(https://sites.google.com/site/younghoonleehome/)

2015년 2월 5일 목요일

Hidden Markov Model

A hidden Markov model (HMM) is a statistical Markov model in which the system being modeled is assumed to be a Markov process with unobserved (hidden) states. An HMM can be presented as the simplest dynamic Bayesian network. The mathematics behind the HMM was developed by L. E. Baum and coworkers.[1][2][3][4][5] It is closely related to an earlier work on the optimal nonlinear filtering problem by Ruslan L. Stratonovich,[6] who was the first to describe the forward-backward procedure.

In simpler Markov models (like a Markov chain), the state is directly visible to the observer, and therefore the state transition probabilities are the only parameters. In a hidden Markov model, the state is not directly visible, but output, dependent on the state, is visible. Each state has a probability distribution over the possible output tokens. Therefore the sequence of tokens generated by an HMM gives some information about the sequence of states. Note that the adjective 'hidden' refers to the state sequence through which the model passes, not to the parameters of the model; the model is still referred to as a 'hidden' Markov model even if these parameters are known exactly.

Hidden Markov models are especially known for their application in temporal pattern recognition such as speech, handwriting, gesture recognition,[7] part-of-speech tagging, musical score following,[8] partial discharges[9] and bioinformatics.

A hidden Markov model can be considered a generalization of a mixture model where the hidden variables (or latent variables), which control the mixture component to be selected for each observation, are related through a Markov process rather than independent of each other. Recently, hidden Markov models have been generalized to pairwise Markov models and triplet Markov models which allow consideration of more complex data structures [10][11] and the modelling of nonstationary data.[12][13]
(출처 : http://en.wikipedia.org/wiki/Hidden_Markov_model)

(펌)Markov process

마르코프 연쇄에 대해서 알아볼 일이 생겨서 위키백과를 참조하는데, 좀 어렵게 설명이 되어 있더군요. 나중에 시간이 생기면 정리를 좀 해 보고 싶습니다. 일단 간략하게 (관리 안 되고 방치되어 있는) 블로그에 알기 쉽게 써 보려고 합니다. 비전공자도 이해할 수 있는 언어로 말이죠.
고전 영화 터미네이터를 보면 미래에 일어나는 일를 막으려고 누군가가 미래에서 찾아오죠. 근데 미래에서 막으면 되지 왜 과거로 오는 것일까요? 그건 미래에 일어나는 일이 과거와 관련이 있기 때문입니다. 과거에 뭔가가 일어났기 때문에 미래에 어떤 일이 일어나는 거죠.
그러면 과거의 어떤 일 때문에 그 일이 일어나는 걸까요? 내가 오늘 지각한 이유는 아침에 늦게 일어났기 때문이지만, 그건 그 전날에 술을 먹었기 때문이고, 술을 먹은 이유는 3년 전에, 소주 회사에서 술의 도수를 낮췄기 때문이다. 이렇게 핑계를 대 볼 수 있습니다. 즉, 오늘 어떤 일이 일어난 이유는 과거에 있었던 무한히 많은 일들이 모두 연관되어 있다는 겁니다.
그런데 너무 복잡합니다. 맞습니다. 너무 복잡합니다. 그런데 이공계의 많은 지식들은 이런 복잡한 문제를 단순하게 보기 시작하면서 문제를 풀어 나갑니다. "세상에 난 수학/과학을 볼 때마다 너무 복잡해서 이해할 수가 없던데, 이걸 간단하다고 하다니..." 라고 생각하시는 분들이 계시겠지만 천만에... 그런 학문들이 없었으면 같은 현상을 이해하기는 훨씬 더 어려울 겁니다. 핫하, 과학은 세상을 더 쉽고 편리하게 만들어 준다니깐요.
잠깐 삼천포로 빠졌습니다. 그러면 어떻게 간단히 해 볼까요? 과거의 무한히 많은 일들 때문에 오늘 이런 일이 일어났다고 생각하지 말고, 과거의 유한(!)한 몇몇 일 때문에 오늘의 일이 일어났다고 생각해 보는 겁니다. 이것이 마르코프의 가정(가설)입니다. 이 가정에 따르는 일련의 과정을 마르코프 과정 혹은 마르코프 연쇄라고 합니다.
그러면 내친김에 아주 간단하게 해 봅시다. 오늘 어떤 일이 일어나는 이유는 바로 전날에 일어난 일 때문이다. 어떤 사건은 그 일이 일어나기 바로 전에 있었던 일과 관련이 있고, 그 둘 사이의 확률로 나타내어 보는 것입니다. 즉, "어제 그녀가 나에게 미소를 지어 주었으니 오늘 그녀가 마찬가지로 나에게 미소를 지어줄 확률이 70 퍼센트는 되겠군." 혹은 "어제 그녀가 화가 났는데 오늘 화가 안 풀렸을 확률이 70 퍼센트 정도는 되겠군." 이런 것이 됩니다. (후... 저랑 별로 관련없는 것으로 예를 들려니 힘들군요. 제발 관련 좀 있게 해 주세요.)
다시 말하자면 방금 설명한 제 마음 속의 여인은 그날의 기분은 바로 전날의 기분에 따라서만(!) 좌우됩니다. 바꾸어 말하면 오늘의 기분에서 일정한 확률로 계산되어 내일의 기분이 결정되는 겁니다. (헉-_- 로보트인가.) 이것이 1차 마르코프 연쇄입니다.
이틀 전의 일까지 오늘의 기분에 직접적으로 영향을 끼치는 조금 더 복잡한 그녀는 2차 마르코프 연쇄를 따르시는 분이 됩니다. 즉, "그녀의 어제의 기분은 어땠고, 이틀전의 기분은 어땠기 때문에 오늘의 기분이 이럴 확률은 몇 퍼센트이군." 이렇게 그녀의 기분을 계산(-_-) 할 수 있다는 겁니다. 대신에, 2년 전에, 어느 날에 기분이 나빴기 때문에 오늘 기분이 나쁘다고 하지는 않습니다. 정확히 말해서, 직접적으로 영향을 받지는 않습니다.
1차 마르코프 연쇄를 따르는 그녀는 바로 전날의 기분에 따라서 오늘의 기분이 좌우되는 이상적인(-_-) 분이시지만, 바로 전날의 기분은 그 전날의 기분에 따라 좌우되기 때문에, 결국 연쇄적으로 따진다면 오늘 그녀의 기분은 태어날 때의 기분과도 관련이 있다는 겁니다. 사슬처럼 연결이 되어 있죠. 그치만, 오늘 그녀의 기분을 예상하는데에는 바로 전날의 기분만 알고 있으면 땡이죠! 수학은 이래서 삶에 도움이 되는 겁니다. 헛헛허... (과연...)
좀 다른 문제를 생각해 보죠. 가위 바위 보를 해서 계단을 올라가는 놀이는 예전에 해 보셨겠죠. 좀 더 높은 확률로 이기려면 바로 전에 상대가 무엇을 냈고 그 다음에 무엇을 내는지를 통계를 낸다면, 골고루 분포되어 있지는 않을 겁니다. 이걸 이용하면 좀 더 많이 이길 수 있을 겁니다. 음악 작곡을 하는데 어떤 음이 나온 뒤에 어떤 음이 나올지에 대한 확률을 구하여 기계 작곡에 도움을 얻을 수도 있을 겁니다. 물론 바로 전에 것 뿐만이 아니라, 그 전에 있는 것까지 볼 수도 있겠지요. (앞에 몇 개까지냐에 따라서 1차, 2차, 3차 ... 가 됩니다.)
자연과학적 개념들을 일단 이게 뭔지 이해를 하고 나면 똑같은 책을 보는데도 훨씬 쉬워집니다. 즉, 같은 마법사의 책(알 수 없는 고대의 언어로 씌여진 이공계 서적)을 본다고 해도 대충 개념이 잡혀 있는 상태에서 보는 경우와 그렇지 않은 상태에서 보는 경우에 개념을 이해하는데 소모되는 칼로리의 양과 쌓이는 스트레스의 강도는 급격히 달라지게 됩니다. 저는 책들이 개념 설명을 좀 쉽게 해 줬으면 좋겠습니다. 각 장의 첫 번째 절에서 쉽게 개념을 잡아주고, 뭔놈의 법칙, 뭔놈의 법칙을 알려줬으면 하는데, 처음부터 외계어로 설명하면 상당히 괴롭습니다. 물론 좋은 책들은 앞 부분에서 개념을 잡아주어 안드로메다로 가는 것을 막아줍니다.
(출처 : http://turtleforward.blogspot.kr/2008/03/blog-post.html)