Skip to content

Latest commit

History

History
149 lines (137 loc) · 14.7 KB

File metadata and controls

149 lines (137 loc) · 14.7 KB

This document enumerates arrayfire API equivalent in Matlab, Python (numpy, scipy). They are grouped into the following sections.

Array Creation

ArrayFire (C++)MatlabPython (numpy, scipy)
Identity matrixidentity(rows, cols)eye(rows, cols)np.identity(rows, 'float32')
Array filled with constant nconstant(n, rows, cols)ones(rows, cols).nnp.ones((rows, cols), 'float32').n
Random filled arrayrandu(rows, cols)rand(rows, cols)rand(rows, cols)
Diagonal vector to matrixdiag(A)diag(A)np.diag(A)

Fetch Array Info

AarrayFire (C++)MatlabPython (numpy, scipy)
array A(rows, cols, f64)
Vector sizeA.elements()length(A)A.size
Number of dimensionsA.ndims()ndims(A)len(x.shape)
shape of matrixA.dims()size(A)A.shape
number of rowsA.dims(0)size(A, 1)A.shape.[0]
number of columnsA.dims(1)size(A, 2)A.shape.[1]
number of elementsA.elements()numel(A)A.size

Indexing

ArrayFire (C++)MatlabPython (numpy, scipy)
Sequencesaf::seq(low,high,step)(low:step:high)'->columnvector
Vector
i+1 elementA(i)A(i+1)A[i]
last elementA(end)A(end)
A(-1)A(end)A[-1]
1 to i elementsA(seq(i))A(1:i)A[:i]
i+1 to END elementsA(seq(i, end))A(i+1:end)A[i:]
i1+1 to i2+1 elementsA(seq(i1, i2))A(i1+1:i2+1)A[i1:i2+1]
i1+1 to i2+1 elements by stepA(seq(i1, i2, step))A(i1+1:step:i2+1)A[i1:i2+1:step]
Matrix
i+1 elementA(i)A(i+1)A[i]
last elementA(end)A(end)
A(-1)A(end)A[-1]
Element(i+1, j+1)A(i, j)A(i+1, j+1)A[i, j]
i+1 rowA(i, span)A(i+1, :)A[i, :]
i+1 columnA(span, i)A(:, i+1)A[:, i]
A(seq(i, end), seq(j, end))A(i+1:end, j+1:end)
A(seq(i, end), span)A(i+1:end, :)A[i:, :]
A(seq(i1, i2), seq(j1, j2))A(i1+1:12+1, j1+1:j2+1)A[i1:i2+1, j1:j2+1]
A(seq(i1, i2, step1), seq(j1, j2, step2))A(i1+1:step1:12+1, j1+1:step2:j2+1)A[i1:i2+1:step1, j1:j2+1:step2]
i+1 rowA.row(i)A(i+1, :)A[i, :]
i+1 to j+1 rowsA.rows(i, j)A(i+1:j+1, :)A[i:j+1, :]
i+1 columnA.col(i)A(:, i+1)A[:, i]
i+1 to j+1 columnsR.cols(i, j)A(:, i+1:j+1)A[:, i:j+1]
i+1 sliceA.slice(i)A(:, :, i+1)A[:, :, i]
i+1 to j+1 slicesA.slices(i, j)A(:, :, i+1:j+1)A[:, :, i:j+1]

Array Reshape

ArrayFire (C++)MatlabPython (numpy, scipy)
Flatten to vectorflat(R)R(:)R.flatten()
Reshapingmoddims(R, rows, cols)reshape(R, [rows, cols])np.reshape(R, (rows, cols))
Conjugate TranspositionR.H()R'R.conj().T
Non-conjugate transposeR.T()R.'R.T
Conjugate of array valuesconjg(R)conj(R)np.conj
Flip left-rightflip(R, 1)fliplr(R)np.fliplr(R)
Flip up-downflip(R, 0)flipud(R)np.flipud(R)
Repeat matrixtile(R, i, j)repmat(R, i, j)np.tile(R, (i, j))
Swap axisreorder(R, 1, 0)permute(R, [2, 1])arr.transpose(2, 1, 0) arr.swapaxes(2, 1)
Bind columnsjoin(1, A1, A2)[A1;A2] vertcat(A1, A2)vstack((a, b)) concatenate((a, b), axis=0)
Bind rowsjoin(0, A1, A2)[A1A2] horzcat(A1, A2)hstack((a, b)) concatenate((a, b), axis=1)
Shiftshift(A, 1)circshift(A, 1)np.roll(R, 1)
Rotaterotate(A, 3)rot90(A)np.rot90(a)

Matrix Math

ArrayFire (C++)MatlabPython (numpy, scipy)
Lower Triangularlower(R)tril(R)np.tril(R)
Upper Triangularupper(R)triu(R)np.triu(R)
Rankrank(R)rank(R)rank(a)
Determinantdet<float>(R)det(R)la.det(a)
Euclid normnorm(R)norm(R)la.norm(R)
L1 normnorm(R,AF_NORM_VECTOR_1)norm(R,1)la.norm(R,1)
L2 normnorm(R,AF_NORM_VECTOR_2)norm(R,2)la.norm(R,2)
L4 normnorm(R,AF_NORM_VECTOR_P,4)norm(R,4)
L_inf normnorm(R,AF_NORM_VECTOR_INF)norm(R,Inf)np.linalg.norm(R,np.Inf)
AdditionA1+A2A1+A2A1+A2
SubtractionA1-A2A1-A2A1-A2
MultiplicationA1*A2A1.*A2np.multiply(A1,A2)
A1*A2
DivisionR=R/QR = P / QR=R/Q
Matrix Multiplicationmatmul(A1,A2)A1*A2np.matmul(A1,A2)
np.dot(A1,A2)
A1@A2
Dot Product(vector)dot(x1,x2)dot(x1,x2)dot(x1,x2)
solve equationsolve(A,B)X=A\Bla.solve(a,B)
Inverseinverse(A)inv(A)la.inv(a)
LUL,U,P=lu(A)[L,U,P]=lu(A)p,l,u=la.lu(a)
Cholesky factorizationcholesky(R,A,true)R=chol(A1)R=la.cholesky(A)
QRqr(Q,R,tau,A)[Q,R]=qr(A)Q,R=la.qr(A)
Singular valuessvd(U,s,Vt,A)[U,S,V]=svd(A)U,s,Vt=la.svd(A)

Statistics

ArrayFire (C++)MatlabPython (numpy, scipy)
Sums of columnssum(A1)sum(A1) sum(A1, 1)np.sum(A1, 0)
Sums of rowssum(A1, 1)sum(A1, 2)np.sum(A1, 1)
Sums of all elem.sum<float>(A1)sum(A1, 'all')np.sum(A1)
Products of columnsproduct(A1)prod(A1) prod(A1, 1)np.prod(A1, 0)
Products of rowsproduct(A1, 1)prod(A1, 2)np.prod(A1, 1)
Products of all elem.product<float>(A1)prod(A1, 'all')np.prod(a)
Averages of columnsmean(A1)mean(A1) mean(A1, 1)np.mean(A1, 0)
Averages of rowsmean(A1, 1)mean(A1, 2)np.mean(A1, 1)
Averages of all elem.mean<float>(A1)mean(A1, 'all')np.mean(A1)
Maximum of columnsmax(A1)max(A1) max(A1, 1)np.max(A1, 0)
Maximum of rowsmax(A1, 1)max(A1, 2)np.max(A1, 1)
Maximum of all elem.max<float>(A1)max(A1, 'all')np.max(A1)
Minimum of columnsmin(A1)min(A1) min(A1, 1)np.min(A1, 0)
Minimum of rowsmin(A1, 1)min(A1, 2)np.min(A1, 1)
Minimum of all elem.min<float>(A1)min(A1, 'all')np.min(A1)
Variance of columnsvar(A1, 1, 0)var(A1) var(A1, 0, 1)
Variance of rowsvar(A1, 1, 1)var(A1, 0, 2)
Variance s of all elem.var<float>(A1)var(A1, 0, 'all')np.var(x)
Stand. deviations of columnsstdev(A1)std(A1, 1, 1)
Stand. deviations of rowsstdev(A1, 1)std(A1, 1, 2)
Stand. deviations of all elem.stdev<float>(A1)std(A1, 1, 'all')np.std(x)

Basic Math

ArrayFire (C++)MatlabPython (numpy, scipy)
Exponentialexp(A1)exp(A1)np.exp(A1)
Element-wise powerpow(A,2)A.^2np.power(A,2)
pow(A,4)A.^4
Roundround(A)round(A)np.around(A)
Round downfloor(A)floor(A)np.floor(A)
Round upceil(A)ceil(A)np.ceil(A)

Signal Processing

ArrayFire (C++)MatlabPython (numpy, scipy)
FFT1D (each column)fft(A)fft(A)np.fft.fft(A,0)
FFT1D (each row)fft(A.T).Tfft(A,2)np.fft.fft(A) np.fft.fft(A,1)