반응형

Coding 120

Matlab - bmp_to_data()

직접 작성해서 유용하게 잘 써먹는 함수 중 하나입니다. 가끔 그림으로 된 그래프를 수치 데이터로 변환하고 싶을때 사용합니다. 사용법은 1. 우선 rgb 3 color layer 24비트 (또는 alpha 포함한 4 layer 32비트) 이미지로 그래프를 준비하고 2. 그림에 원색이 섞여있거나 하면 가급적 원색이 없는 상태로 (예를 들어 24비트 그레이) 만들고 3. 윈도우 그림판에 그림을 올린 후 그림에 없는 색상을 기준으로 데이터 범위를 둘러싸는 외곽선과 원하는 데이터 포인트를 원하는 색상으로 두께 1 pixel 짜리 선과 점으로 표시해둡니다. 이 함수는 색상을 기준으로 좌표 범위와 데이터 포인트를 찾습니다. 4. 함수의 인자는 help 로 보면 설명이 나옵니다. 예를 들어 이런 그림이라는 가정하에 그..

Poisson Disc Sampling - 2차원 패턴 랜더마이징 알고리즘

업무상 자주 2차원 랜덤패턴, 또는 2차원 공간에서의 파라메터 랜더마이징이 필요할때가 있습니다. 1차원이라면 그냥 python 의 shuffle 또는 랜덤 함수만으로도 그럭저럭 써먹곤 하는데 2차원에선 기껏 랜덤함수를 사용해도 비슷한 놈들끼리 몰리거나 위치가 뭉치는 (aggregation?) 현상이 일어나곤 합니다. 이걸 해결하기 위해서 입자들의 인력 (또는 척력) 에 의한 시스템의 최소 에너지 상태로 최적화하는 molecular dynamics 알고리즘을 사용하여 오래전에 C++ 로 콘솔 실행용 프로그램을 만들어서 아직도 잘 써먹고 있습니다만, 많은 횟수의 iteration (최소 30회) 을 사용하고 모든 입자들의 위치를 재배치하는 과정이라 시간이 많이 걸립니다. 게다가 실행파일로 된 것을 써먹기에 ..

Coding/Misc 2022.11.10

Python - interpolate 1D & 2D

매트랩에 비해 많이 불편하다. ㅠㅠ 이래서 매트랩을 쓰게 되는 듯... import numpy as np from scipy import interpolate import matplotlib.pyplot as plt X = np.linspace(0,10,10) Y = np.sin(X) X1 = np.linspace(0,10,100) f1 = interpolate.interp1d(X,Y,'linear') f2 = interpolate.interp1d(X,Y,'cubic') f3 = interpolate.interp1d(X,Y,'quadratic') Y1 = f1(X1) Y2 = f2(X1) Y3 = f3(X1) Y4 = np.sin(X1) plt.plot(X,Y,'o', X1,Y1, X1,Y2, X1,Y3..

Matlab 과 Python 에서 multidimensional array 차이

매트랩은 가장 첫 두 인덱스를 기준으로 한 2차원 매트릭스의 다중차원으로 보여주는 반면 Numpy 에서는 인덱스 순서 대로 처리, 즉 마지막 두 인덱스의 2차원 매트릭스의 다중차원 중첩 식으로 보여줌. 예를 들어 ones(3,4,2,2) 라는 것을 구현할 경우 매트랩 >> ones(3,4,2,2) ans(:,:,1,1) = 1 1 1 1 1 1 1 1 1 1 1 1 ans(:,:,2,1) = 1 1 1 1 1 1 1 1 1 1 1 1 ans(:,:,1,2) = 1 1 1 1 1 1 1 1 1 1 1 1 ans(:,:,2,2) = 1 1 1 1 1 1 1 1 1 1 1 1 Numpy >>> c = np.ones((3,4,2,2)) >>> c array([[[[1., 1.], [1., 1.]], [[1., ..

728x90