※ 본업이 개발은 아니지만 코딩을 좋아하는 연구자의 입장에서 쓴 글임을 먼저 밝혀둡니다. 파이썬을 처음 공부하는 분들(특히 학생)이 정말 자주 하는 질문이 있습니다. "파이썬도 자격증이 있나요? 따두면 도움이 될까요?" "파이썬 잘하면 취업 잘되나요?" "기본서 다 봤어요. 이제 뭐 봐야 되나요?" 조금씩 다른 질문들이고 답변도 조금씩 다릅니다만, 이 질문들을 꿰뚫는 더 중요한 질문이 있습니다. "파이썬 배우면 나중에 뭘 할 수 있나요?" 현직에 계신 분들은 "이걸 배워서 어디다 써먹지?"라는 의문은 보통 갖지 않으실 겁니다. 이미 필요해서 배우고 계실테니까요. 하지만 학생분들은 필요해서 배운다기보다는 누가 시키니까 배우는 경우가 많습니다. 시키는 주체는 학교가 될 수도 있고 사회가 될 수도 있습니다. ..
두 가지 방법으로 짜보았습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 # product of two unit quaternions # without using if-else def calProdUnitQuat(arg1, arg2): # input string -> Boolean q1 = [arg1=='1'] + [arg1==s for s in 'ijk'] q2 = [arg2=='1'] + [arg2==s for s in 'ijk'] q3 = [0]*4 # https://personal.utdallas.edu/~sxb027100/dock/quaternion.html q3[0] = q1[0]*q2[0] - q1[1]*q2[1] - q1[2]*q2[2] - q1[3]*q2..
for문은 보통 다음의 Code 1과 같은 방법으로 많이 사용됩니다. % Code 1 % % For a given vector, generate % a new vector whose element is % 1 when the element of the given % vector at the same position is % greater than 0.5, otherwise 0. % % 벡터 a가 주어졌을 때, a의 각 요소가 % 0.5보다 크면 1, 그렇지 않으면 0인, % a와 크기가 같은 새 벡터를 생성하라. a = rand(1,10); b = zeros(size(a)); for i = 1:length(a) if a(i) > 0.5 b(i) = 1; end end 즉, 벡터 a의 길이만큼 반복문을 수..
영국사람들은 특이한 연구를 많이 합니다. 이런 기사까지 있을 정도니까요. 그리고 최근에는 "욕"에 대한 연구를 진행했습니다. (논문링크) 얼음물에 손을 담그고, 욕을 할 때와 하지 않을 때 얼마나 잘 참을 수 있는지 비교했다고 합니다. 실제로 욕을 함으로써 physical pain tolerance(얼음물 challenge)와 social pain tolerance(따돌림)가 높아진다는 연구는 이미 수행된 바가 있습니다. 욕을 통해서 자율신경반응이 일어나기 때문이라고 하네요. 또한 욕에는 주의를 분산시키는(distracting) 기능도 있어서 pain tolerance 증가에 도움을 줍니다. 욕 자체가 "웃기는(humorous)", 그리고 "신선한(novel)" 느낌을 주기 때문입니다. 800명에게 50..
Python GUI를 만들 수 있는 framework은 종류가 어마어마하게 많습니다. Cross-platform만 38가지나 있습니다. 물론 그 중에 인기가 많은, 즉 유저가 많은 framework이 있습니다. 하지만 막상 검색을 해보면 추천하는 framework이 각양각색입니다. 직접 써보기 전에는 장단점을 파악하기 어렵고, 그또한 개인차가 있을 수 있겠지요. 그래서 구글검색을 통해 각 framework이 얼마나 추천을 받는지 조사해봤습니다. 결과를 보니 Tkinter와 PyQt가 가장 많이 추천을 받고 있군요. Tkinter는 python에 포함되어 있는 모듈이라는 장점이 있고 (즉, 모듈 추가 설치가 필요하지 않음) 배우기 쉽고, 오래된 만큼 안정적이라고들 얘기합니다. 대신 이쁘지 않다는 게 단점으..
python console에서 import this를 하면 아래와 같이 The Zen of Python을 볼 수 있습니다. Zen은 '철학' 정도로 보면 될 것 같습니다. 번역은 나무위키 것을 가져와 약간 수정했습니다. 아름다운 것이 추한 것보다 낫다. (Beautiful is better than ugly.) 명시적인 것이 암묵적인 것보다 낫다. (Explicit is better than implicit.) 간결한 것이 복잡한 것보다 낫다. (Simple is better than complex.) 복잡한 것이 난해한 것보다 낫다. (Complex is better than complicated.) 수평적인 것이 내포된 것보다 낫다. (Flat is better than nested.) 여유로운(희소..
저는 에디터에 파일을 많이 띄워두는 편입니다. 아직 작업이 끝나지 않은 파일은 당장 쓰지 않더라도 띄워놔야 나중에 작업을 이어갈 수 있기 때문인데요. 가끔 실수로 에디터 창을 닫을 때가 있습니다. 요즘 웹브라우저는 마지막 세션을 그대로 복구할 수 있지만, 매트랩의 에디터는 그런 기능이 없습니다. 결국 기억을 더듬어서 파일을 하나씩 여는 수밖에 없습니다. 이런 사태를 방지하려면 사용자가 조심해서 써야 합니다만... 다행히 에디터를 복구할 방법이 있습니다. 매트랩이 설정파일들을 따로 모아두는 폴더가 있는데, 그 폴더에 xml 파일의 형태로 마지막 세션과 현재 세션의 m파일들이 담겨있습니다. 이 파일 정보만 꺼내서 복구할 수 있습니다. 아래는 그 복구코드입니다. (원본: kr.mathworks.com/matl..
로또 프로그램을 짜봤습니다. 6개 숫자를 입력으로 넣으면 난수 6개를 생성해서 몇개나 맞췄는지 출력해줍니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 function n = lotto(mypick) mypick = sort(mypick); if sum(diff(mypick)==0)>0 warning('너는 첫판부터 장난질이냐?') n = -1; return end theirpick = sort(randperm(45,6)); fprintf('Your picks are: '); fprintf('%d\t', mypick); fprintf(newline) fprintf('They picked as: '); fprintf('%d\t',t..
규모가 작지 않은 프로젝트를 하다보면, 필히 여러 개의 m파일을 사용하게 됩니다. 용이한 관리를 위해 기능별로 함수 파일을 따로 만들기도 하고, 평소에 자주 쓰는 기능을 함수로 만들어 둔 것을 가져와서 쓰기도 합니다. 문제는 이 프로젝트를 배포하거나 통채로 다른 pc로 옮겨야 할 때 발생합니다. Dependency가 있는 파일들만 골라서 압축할 수 있다면 프로젝트를 배포하기 굉장히 편해질 것입니다. Program dependency를 확인하는 기능은 이미 매트랩에 있습니다. kr.mathworks.com/help/matlab/matlab_prog/identify-dependencies.html 여기에 압축파일을 만드는 zip 함수만 이용하면, 아래와 같이 간단하게 코드를 짤 수 있습니다. 1 2 [fLi..
figure나 axes의 colormap은 보통 64x3 행렬 형태로 들어있습니다. 실제로 어떤 colormap이 적용됐는지 알기 어렵죠. 그래서 첨부와 같이 만들어보았습니다. handle을 입력으로 넣으면 어떤 colormap인지 string으로 반환해줍니다. 2019년 12월 22일 현재 18개의 colormap이 있습니다. 이 18개에 해당되지 않으면 "unknown"을 반환합니다. 자유롭게 사용하시되, developer 정보는 남겨주세요. 게으른맽랩