줄리아, 매트랩, 파이썬, R에서 동등한 코드들
개요
줄리아, 매트랩, 파이썬, R에서 같은 기능을 하는 코드를 정리한다.
파이썬에 대해서 다음과 같은 환경이라고 하자.
import numpy as np
일반Common
줄리아Julia | 매트랩Matlab | 파이썬Python | R |
주석comment | |||
#comment | %comment | #comment | #comment |
2차원 그리드2d grid | |||
X = kron(x, ones(size(y)))Y = kron(ones(size(x)), y) | [X,Y] = meshgrid(x,y) | np.meshgrid(x,y) |
타입Type
줄리아Julia | 매트랩Matlab | 파이썬Python | R |
성분의 타입type of elements | |||
eltype(x) | x.dtype | ||
성분의 타입 변경changing type of elements | |||
convert(Array{Float64},x) | x.astype("float64") | ||
x의 타입type of x | |||
typeof(x) | type(x)#class of x |
벡터Vector
줄리아Julia | 매트랩Matlab | 파이썬Python | R |
열 벡터column vector | |||
[1 4 -1 2] | [1;4;-1;2] | np.array([1,4,-1,2]).reshape(-1,1) | |
행 벡터 Row vector | |||
[1;; 4;; -1;; 2]or[1 4 -1 2]' | [1 4 -1 2]or[1,4,-1,2] | np.array([1,4,-1,2]) | |
영 벡터 Zero vector | |||
zeros(n)#column vector | zeros(n,1)#not zeros(n)#zeros(n)=zeros(n,n) | np.zeros(n)#row vector | matrix(0,n) |
1 벡터Vector with only ones | |||
ones(n)#column vector | ones(n,1)#not ones(n)#ones(n)=ones(n,n) | np.ones(n)#row vector | |
선형 간격의 샘플(길이 기준)n equally spaced sample | |||
range(0,stop=1,length=10)orLinRange(0,1,10) | linspace(0,1,10)#row vector | np.linspace(0,stop=1,num=10)#row vector | |
선형 간격의 샘플(간격 기준)n equally spaced sample | |||
range(0, stop=1, step=0.1) | 0 : 0.1 : 1 | np.arange(0,1.001,0.1) | |
로그 간격의 샘플n logarithmically spaced sample | |||
10 .^range(0,1,10) | logspace(0,1,10)#row vector | np.logspace(0,stop=1,num=10,base=10)#row vector |
행렬Matrix
줄리아Julia | 매트랩Matlab | 파이썬Python | R |
영 행렬zero matrix | |||
zeros(m,n) | zeros(m,n) | np.zeros([m,n]) | matrix(0,m,n) |
플래튼flatten | |||
vec(x) | x(:) | np.ravel(x) | |
x와 같은 크기, 데이터타입의 zeros 반환return zeros with the same shape and dtype as a given x | |||
zero(x) | np.zeros_like(x) | ||
x와 같은 크기, 데이터타입의 ones 반환return ones with the same shape and dtype as a given x | |||
fill!(similar(x), 1) | np.ones_like(x) | ||
차원dimensions | |||
ndims(x) | ndims(x) | x.ndim | |
크기size of matrix | |||
size(x) | size(x) | x.shape | |
성분의 수number of elements | |||
length(x) | numel(x) | x.size | |
가장 큰 차원의 길이length of largest dimension | |||
maximum(size(x)) | length(x) | max(x.shape) |
무작위 추출Random sampling
줄리아Julia | 매트랩Matlab | 파이썬Python | R |
균등분포 랜덤 벡터Uniformly distributed random vector | |||
rand(n)#column vector | rand(n,1)#not rand(n)#rand(n)=rand(n,n) | np.random.rand(n)#row vector | |
균등분포 랜덤 행렬Uniformly distributed random matrix | |||
rand(m,n) | rand(m,n) | np.random.rand(m,n) | |
표준정규분포Normally distributed random numbers | |||
randn(m,n) | randn(m,n) | np.random.randn(m,n) |
푸리에 변환Fourier Transform
줄리아에 대해서 다음과 같은 환경이라고 하자.
using FFTW
줄리아Julia | 매트랩Matlab | 파이썬Python | R |
푸리에 변환 Fourier transform | |||
fft(x) | fft(x) | np.fft.fft(x) | fft(x) |
푸리에 역변환 Inverse Fourier transform | |||
ifft(x) | ifft(x) | np.fft.ifft(x) | fft(y,inverse=TRUE)/length(y) |
보간법Interpolation
파이썬에 대해서 다음과 같은 환경이라고 하자.
from scipy.interpolate import griddata
$X, Y, P, Z$를 2차원 배열, $x, y$를 1차월 배열이라고 하자.
줄리아Julia | 매트랩Matlab | 파이썬Python | R |
2차원 보간 2D interpolation | |||
Z=interp2(X,Y,P,x,y) | Z=griddata((np.ravel(X),np.ravel(Y)),np.ravel(P),(x,y)) |
시각화Visualization
줄리아에 대해서 다음과 같은 환경이라고 하자.
using Plots
파이썬에 대해서 다음과 같은 환경이라고 하자.
import matplotlib.pyplot as plt
2차원 이미지로 출력하고자 하는 배열을 $A$라고 하자.
줄리아Julia | 매트랩Matlab | 파이썬Python | R |
스케일 범위 지정 Set scale range | |||
heatmap(A,clim=(a,b)) | plt.imshow(A)plt.colorbar()plt.clim(a,b) | ||
수평선 Horizon line | |||
hline!(a) | plt.axhline(a) | ||
수직선 Vertical line | |||
vline!(a) | plt.axvline(a) |