logo

줄리아, 매트랩, 파이썬, R에서 동등한 코드들 📂프로그래밍

줄리아, 매트랩, 파이썬, R에서 동등한 코드들

개요

줄리아, 매트랩, 파이썬, R에서 같은 기능을 하는 코드를 정리한다.

파이썬에 대해서 다음과 같은 환경이라고 하자.

import numpy as np

일반Common

줄리아Julia매트랩Matlab파이썬PythonR
주석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파이썬PythonR
성분의 타입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파이썬PythonR
열 벡터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)
or
LinRange(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 : 1np.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파이썬PythonR
영 행렬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파이썬PythonR
균등분포 랜덤 벡터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파이썬PythonR
푸리에 변환 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파이썬PythonR
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파이썬PythonR
스케일 범위 지정 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)