This is a short guide to translate commands in three different numerical analysis software packages: R, MATLAB and IGOR Pro. Equivalents are given for commands, gathered under a set of headings. This work is mainly by Vidar Bronken Gundersen and Ben Gallarda, see Credits for details.
If you can contribute to this cheat sheet (edits, corrections, more categories etc.), please use GitHub's fork/pull/propose changes facility. The fields with ? need attention.
Note that some commands use IGOR Pro 7 and are not compatible with IGOR Pro 6.3 or lower.
##Table of contents Basics and Terminology | Help | Searching available documentation | Using interactively | Operators | Arithmetic operators | Relational operators | Logical operators | root and logarithm | Round off | Mathematical constants | Missing values | Complex numbers | Trigonometry | Generate random numbers | Vectors | Sequences | Concatenation (vectors) | Repeating | Miss those elements out | Maximum and minimum | Vector multiplication | Matrices | Concatenation (matrices); rbind and cbind | Array creation | Reshape and flatten matrices | Shared data (slicing) | Indexing and accessing elements (Python: slicing) | Assignment | Transpose and inverse | Sum | Sorting | Maximum and minimum | Matrix manipulation | Equivalents to “size” | Matrix- and elementwise- multiplication | Find; conditional indexing | Multi-way arrays | File input and output | Plotting | Basic x-y plots | Axes and titles | Log plots | Filled plots and bar plots | Functions | Polar plots | Histogram plots | 3d data | Contour and image plots | Perspective plots of surfaces over the x-y plane | Scatter (cloud) plots | Save plot to a graphics file | Data analysis | Set membership operators | Statistics | Interpolation and regression | Non-linear methods | Polynomials, root finding | Differential equations | Fourier analysis | Symbolic algebra; calculus | Programming | Loops | Conditionals | Debugging | Working directory and OS | Credits |
Description | R | MATLAB | IGOR |
---|---|---|---|
Indexing | 1-based | 1-based | 0-based |
Case sEnSiTiVe | Yes | Yes | No |
Scalar | Variable | Scalar | Variable |
List of numbers | Vector | Vector | 1D Wave equivalent to column vector |
Matrix of numbers | Matrix | Matrix | 2D Wave or Matrix |
Higher dimensions | Yes | Yes | Yes Rows = p Columns = q Layers = r Chunks = s |
Variables and number types |
int num = Doublelogi Use lubridate complex |
4 integer types Double ? Use datenum Complex number type |
Make/B a or Variable or NVAR Make/D a or Variable or NVAR ? Date/Time Wave Complex number type |
Text | chr |
? | TextWave:Make/T a or String or SVAR |
Mixed-type "matrix" | Yes Data Frame |
Yes struct |
Generally no Possible with .id |
Description | R | MATLAB | IGOR |
---|---|---|---|
Browse help interactively | help.start() |
doc |
F1 Help > Igor Help Browser |
Help on using help | help() |
help help or doc doc |
DisplayHelpTopic "Help" |
Help for a function | help(plot) or ?plot |
help plot |
Right-click function name "Help for function" or ⎇ +⌘ +F1 |
Help for a toolbox/library package | help |
help splines or doc splines |
|
Demonstration examples | demo() |
demo |
File > Example Experiments |
Example using a function | example(plot) |
Example using a function |
Description | R | MATLAB | IGOR |
---|---|---|---|
Search help files | help.search('plot') |
lookfor plot |
F1 Help > Igor Help Browser |
Find objects by partial name | apropos('plot') |
||
List available packages | library() |
help |
|
Locate functions | find(plot) |
which plot |
Help > Command Help |
List available methods for a function | methods(plot) |
Description | R | MATLAB | IGOR |
---|---|---|---|
Start session | Rgui |
File > New Experiment or⌘ +N |
|
Run code from file | source('foo.R') |
foo(.m) |
FunctionName() |
Command history | history() |
See History Area | |
Save command history | savehistory(file=".Rhistory") |
diary on [..] diary off |
CreateHistoryCarbonCopy() |
End session | q(save='no') |
exit or quit |
quit() or ⌘ +Q |
Description | R | MATLAB | IGOR |
---|---|---|---|
Help on operator syntax | help(Syntax) |
help - |
DisplayHelpTopic "Operators" orDisplayHelpTopic "MatrixOP" |
Description | R | MATLAB | IGOR |
---|---|---|---|
Assignment; defining a number | a<-1; b<-2 |
a=1; b=2; |
Variable a=1, b=2 |
Addition | a + b |
a + b |
a + b |
Subtraction | a - b |
a - b |
a - b |
Multiplication | a * b |
a * b |
a * b |
Division | a / b |
a / b |
a / b |
Power, ab | a ^ b |
a .^ b |
a ^ b |
Remainder | a %% b |
rem(a,b) |
mod(a,b) |
Integer division | a %/% b |
||
Factorial, n! | factorial(a) |
factorial(a) |
factorial(a) |
Description | R | MATLAB | IGOR |
---|---|---|---|
Equal | a == b |
a == b |
a == b |
Less than | a < b |
a < b |
a < b |
Greater than | a > b |
a > b |
a > b |
Less than or equal | a <= b |
a <= b |
a <= b |
Greater than or equal | a >= b |
a >= b |
a >= b |
Not Equal | a != b |
a ~= b |
a != b |
Description | R | MATLAB | IGOR |
---|---|---|---|
Short-circuit logical AND | a && b |
a && b |
a && b |
Short-circuit logical OR | `a | b` | |
Element-wise logical AND | a & b |
a & b or and(a,b) |
a & b |
Element-wise logical OR | `a | b` | `a |
Logical EXCLUSIVE OR | xor(a, b) |
xor(a, b) |
%^ |
Logical NOT | !a |
~a or not(a) |
!a |
True if any element is nonzero | any(a) |
||
True if all elements are nonzero | all(a) |
Description | R | MATLAB | IGOR |
---|---|---|---|
Square root | sqrt(a) |
sqrt(a) |
sqrt(a) |
Logarithm, base e (natural) | log(a) |
log(a) |
ln(a) |
Logarithm, base 10 | log10(a) |
log10(a) |
log(a) |
Logarithm, base 2 (binary) | log2(a) |
log2(a) |
log(a) / log(2) |
Exponential function | exp(a) |
exp(a) |
exp(a) |
Description | R | MATLAB | IGOR |
---|---|---|---|
Round | round(a) |
round(a) |
round(a) |
Round up | ceil(a) |
ceil(a) |
ceil(a) |
Round down | floor(a) |
floor(a) |
floor(a) |
Round towards zero | fix(a) |
trunc(a) |
Description | R | MATLAB | IGOR |
---|---|---|---|
π = 3.141592 | pi |
pi |
pi |
e = 2.718281 | exp(1) |
exp(1) |
e |
Description | R | MATLAB | IGOR |
---|---|---|---|
Not a Number | NaN |
NaN |
|
Infinity, ∞ | Inf |
inf |
Description | R | MATLAB | IGOR |
---|---|---|---|
Imaginary unit | 1i |
i |
i |
A complex number, 3 + 4i | z <- 3+4i |
z = 3+4i |
variable/c z = cmplx(3,4) |
Absolute value (modulus) | abs(3+4i) or Mod(3+4i) |
abs(z) |
sqrt(magSqr(z) |
Real part | Re(3+4i) |
real(z) |
real(z) |
Imaginary part | Im(3+4i) |
imag(z) |
imag(z) |
Argument | Arg(3+4i) |
arg(z) |
|
Complex conjugate | Conj(3+4i) |
conj(z) |
conj(z) |
Description | R | MATLAB | IGOR |
---|---|---|---|
Arctangent, arctan(b/a) | atan2(b,a) |
atan(a,b) |
atan2(b,a) |
Description | R | MATLAB | IGOR |
---|---|---|---|
Uniform distribution | runif(10) |
rand(1,10) |
Make/N=10 wave0 = 0.5 + enoise(0.5) |
Uniform: Numbers between 2 and 7 | runif(10, min=2, max=7) |
2+5*rand(1,10) |
Make/N=10 wave0 = 2+ + abs(enoise(5)) |
Uniform: 6,6 array | matrix(runif(36),6) |
rand(6) |
Make/N=(6,6) wave0 = enoise(1) |
Normal distribution | rnorm(100,0,1) |
randn(100,1) |
Make/N=100 wave0 = gnoise(1) |
Description | R | MATLAB | IGOR |
---|---|---|---|
Row vector, 1 × n-matrix | a <- c(2,3,4,5) |
a=[2 3 4 5]; |
Make/N=4 a = {2, 3, 4, 5} |
Column vector, m × 1-matrix | adash <- t(c(2,3,4,5)) |
adash=[2 3 4 5]'; |
Make/N=(1,4) adash = {2, 3, 4, 5} |
Description | R | MATLAB | IGOR |
---|---|---|---|
1,2,3, … ,10 | seq(10) or 1:10 |
1:10 |
make/N=10 a = p+1 |
0.0,1.0,2.0, … ,9.0 | seq(0,length=10) |
0:9 |
Make/N=10 a = p |
1,4,7,10 | seq(1,10,by=3) |
1:3:10 |
Make/N=4 a = p*3+1 |
10,9,8, … ,1 | seq(10,1) or 10:1 |
10:-1:1 |
make/N=10 a = 10-p |
10,7,4,1 | seq(from=10,to=1,by=-3) |
10:-3:1 |
Make/N=4 a = 10-(p*3) |
Linearly spaced vector of n=7 points | seq(1,10,length=7) |
linspace(1,10,7) |
Make/N=2 a = {1,10} Interpolate2/T=1/N=7/Y=a_L a |
Reverse | rev(a) |
reverse(a) |
Reverse a |
Set all values to same scalar value | a(:) = 3 |
a = 3 |
Description | R | MATLAB | IGOR |
---|---|---|---|
Concatenate two vectors | c(a,a) |
[a a] |
Concatenate {a,a}, b |
c(1:4,a) |
[1:4 a] |
Make/N=4 b = 1 + p Concatenate {b,a}, c |
Description | R | MATLAB | IGOR |
---|---|---|---|
1 2 3, 1 2 3 | rep(a,times=2) |
[a a] |
Concatenate/NP {a,a}, b |
1 1 1, 2 2 2, 3 3 3 | rep(a,each=3) |
Concatenate {a,a,a},b MatrixTranspose b Redimension/N=9 b |
|
1, 2 2, 3 3 3 | rep(a,a) |
Description | R | MATLAB | IGOR |
---|---|---|---|
miss the first element | a[-1] |
a(2:end) |
a[1,*] |
miss the tenth element | a[-10] |
a([1:9]) |
a[0,numpnts(a)-2] |
miss 1,4,7, … | a[-seq(1,50,3)] |
a[0,*;3] |
|
last element | a(end) |
a[numpnts(a)-1] |
|
last two elements | a(end-1:end) |
a[numpnts(a)-2,*] |
Description | R | MATLAB | IGOR |
---|---|---|---|
pairwise max | pmax(a,b) |
max(a,b) |
max(a,b) |
max of all values in two vectors | max(a,b) |
max([a b]) |
max(wavemax(a),wavemax(b)) |
v <- max(a) ; i <- which.max(a) |
[v,i] = max(a) |
WaveStats a v = V_max, i = V_maxRowLoc |
Description | R | MATLAB | IGOR |
---|---|---|---|
Multiply two vectors | a*a |
a.*a |
MatrixOp b = a * a |
Vector dot product, u ⋅ v | dot(u,v) |
MatrixOp b = u . v |
Description | R | MATLAB | IGOR |
---|---|---|---|
Define a matrix | rbind(c(2,3),c(4,5)) array(c(2,3,4,5), dim=c(2,2)) |
a = [2 3;4 5] |
Make/N=(2,2) a = {{2,4},{3,5}} |
Description | R | MATLAB | IGOR |
---|---|---|---|
Bind rows | rbind(a,b) |
[a ; b] |
Concatenate/NP=1 {a,b}, c |
Bind columns | cbind(a,b) |
[a , b] |
Concatenate/NP=0 {a,b}, c |
Concatenate matrices into one vector | [a(:), b(:)] |
? | |
Bind rows (from vectors) | rbind(1:4,1:4) |
[1:4 ; 1:4] |
Make/N=(2,4) a = 1 + q |
Bind columns (from vectors) | cbind(1:4,1:4) |
[1:4 ; 1:4]' |
Make/N=(4,2) a = 1 + p |
Description | R | MATLAB | IGOR |
---|---|---|---|
0 filled array | matrix(0,3,5) or array(0,c(3,5)) |
zeros(3,5) |
Make/N=(3,5) a = 0 |
1 filled array | matrix(1,3,5) or array(1,c(3,5)) |
ones(3,5) |
Make/N=(3,5) a = 1 |
Any number filled array | matrix(9,3,5) or array(9,c(3,5)) |
ones(3,5)*9 |
Make/N=(3,5) a = 9 |
Identity matrix | diag(1,3) |
eye(3) |
Identity matrix |
Diagonal | diag(c(4,5,6)) |
diag([4 5 6]) |
Make/N=(3,3) a = 4+p MatrixOp b = diagonal(a) |
Magic squares; Lo Shu | magic(3) |
? |
Description | R | MATLAB | IGOR |
---|---|---|---|
Reshaping (rows first) | matrix(1:6,nrow=3,byrow=T) |
reshape(1:6,3,2)'; |
Make/N=6 a = 1 + p Redimension/N=(2,3) a |
Reshaping (columns first) | matrix(1:6,nrow=2) array(1:6,c(2,3)) |
reshape(1:6,2,3); |
As above, then MatrixTranspose a |
Flatten to vector (by rows, like comics) | as.vector(t(a)) |
a'(:) |
WaveTranspose a Redimension/N=(numpnts(a)) a |
Flatten to vector (by columns) | as.vector(a) |
a(:) |
Redimension/N=(numpnts(a)) a |
Flatten upper triangle (by columns) | a[row(a) <= col(a)] |
vech(a) |
? |
Description | R | MATLAB | IGOR |
---|---|---|---|
Copy of a | b = a |
b = a |
Duplicate a, b |
Description | R | MATLAB | IGOR |
---|---|---|---|
Input is a 3,4 array | a <- rbind(c(11, 12, 13, 14), c(21, 22, 23, 24), c(31, 32, 33, 34)) |
a = [ 11 12 13 14 ... 21 22 23 24 ... 31 32 33 34 ] |
Make/N=(4,3) a = {{11,12,13,14},{21,22,23,24},{31,32,33,34}} MatrixTranspose a |
Element 2,3 (row,col) | a[2,3] |
a(2,3) |
a[1][2] |
First row | a[1,] |
a(1,:) |
a[0][] |
First column | a[,1] |
a(:,1) |
a[][0] |
Array as indices | a([1 3],[1 4]); |
? | |
All, except first row | a[-1,] |
a(2:end,:) |
a[1,*][] |
Last two rows | a(end-1:end,:) |
a[dimsize(a,0)-2,][] |
|
Strides: Every other row | a(1:2:end,:) |
a[0,*;2][] |
|
All, except row,column (2,3) | a[-2,-3] |
? | |
Remove one column | a[,-2] |
a(:,[1 3 4]) |
DeletePoints/M=1 0,1,a |
Description | R | MATLAB | IGOR |
---|---|---|---|
a[,1] <- 99 |
a(:,1) = 99 |
a[][1] = 99 |
|
a[,1] <- c(99,98,97) |
a(:,1) = [99 98 97]' |
a[][1] = {99,98,97} or a[][1] = 99 - p |
|
Clipping: Replace all elements over 90 | a[a>90] <- 90 |
a(a>90) = 90; |
a = (a[p][q] > 90) ? 90 : a[p][q] |
Description | R | MATLAB | IGOR |
---|---|---|---|
Transpose | t(a) |
a' |
MatrixTranspose a |
Non-conjugate transpose | a.' or transpose(a) |
MatrixTranspose/H a |
|
Determinant | det(a) |
det(a) |
MatrixDet a or MatrixOp b = det(a) |
Inverse | solve(a) |
inv(a) |
MatrixInverse a |
Pseudo-inverse | ginv(a) |
pinv(a) |
MatrixInverse/P a |
Norms | norm(a) |
norm(a) |
|
Eigenvalues | eigen(a)$values |
eig(a) |
MatrixEigenV a |
Singular values | svd(a)$d |
svd(a) |
MatrixSVD a |
Cholesky factorization | chol(a) |
MatrixOp chol(a) |
|
Eigenvectors | eigen(a)$vectors |
[v,l] = eig(a) |
MatrixEigenV a |
Rank | rank(a) |
rank(a) |
MatrixRank(a) |
Description | R | MATLAB | IGOR |
---|---|---|---|
Sum of each column | apply(a,2,sum) |
sum(a) |
MatrixOp b = sumCols(a) |
Sum of each row | apply(a,1,sum) |
sum(a') |
MatrixOp b = sumRows(a) |
Sum of all elements | sum(a) |
sum(sum(a)) |
Sum(a) |
Cumulative sum (columns) | apply(a,2,cumsum) |
cumsum(a) |
MatrixOp b = sumCols(a) Integrate/DIM=1 b |
Description | R | MATLAB | IGOR |
---|---|---|---|
a <- rbind(c(4,3,2),c(2,8,6),c(1,4,7)) |
a = [ 4 3 2 ; 2 8 6 ; 1 4 7 ] |
Make/N=(3,3) a = {{4,2,1},{3,8,4},{2,6,7}} |
|
Flat and sorted | t(sort(a)) |
sort(a(:)) |
Redimension/N=9 a Sort a,a |
Sort each column | apply(a,2,sort) |
sort(a) |
SortColumns keywaves={a},sortwaves={a} |
Sort each row | t(apply(a,1,sort)) |
sort(a')' |
SortColumns following MatrixTranspose |
Sort rows (by first row) | sortrows(a,1) |
? | |
Sort, return indices | order(a) |
MakeIndex a,b ? |
Description | R | MATLAB | IGOR |
---|---|---|---|
max in each column | apply(a,2,max) |
max(a) |
MatrixOp b=maxCols(a) |
max in each row | apply(a,1,max) |
max(a') |
MatrixOp b=a^t MatrixOp c=maxCols(b) |
max in array | max(a) |
max(max(a)) |
MatrixOp b=maxVal(a) or WaveStats a |
return indices, i | i <- apply(a,1,which.max) |
[v i] = max(a) |
WaveStats a V_maxRowLoc V_maxColLoc |
pairwise max | pmax(b,c) |
max(b,c) |
max(b,c) |
apply(a,2,cummax) |
cummax(a) |
max(sum(b),sum(c)) |
Description | R | MATLAB | IGOR |
---|---|---|---|
Flip left-right | a[,4:1] |
fliplr(a) |
MatrixOp b=reverseRows(a) |
Flip up-down | a[3:1,] |
flipud(a) |
MatrixOp b=reverseCols(a) |
Rotate 90 degrees | rot90(a) |
MatrixOp b=a^t |
|
Repeat matrix: [ a a a ; a a a ] | kronecker(matrix(1,2,3),a) |
repmat(a,2,3) |
Concatenate/NP=1 {a,a,a},b Concatenate/NP=0 {b,b},c |
Triangular, upper | a[lower.tri(a)] <- 0 |
triu(a) |
? |
Triangular, lower | a[upper.tri(a)] <- 0 |
tril(a) |
? |
Description | R | MATLAB | IGOR |
---|---|---|---|
Matrix dimensions | dim(a) |
size(a) |
WaveInfo(a) or see Data Browser |
Number of columns | ncol(a) |
size(a,2) or length(a) |
dimsize(a,1) |
Number of elements | prod(dim(a)) |
length(a(:)) |
numpnts(a) |
Number of dimensions | ndims(a) |
WaveDims(a) |
|
Number of bytes used in memory | object.size(a) |
WaveInfo(a) or see Data Browser |
Description | R | MATLAB | IGOR |
---|---|---|---|
Elementwise operations | a * b |
a .* b |
MatrixOp c = a * b |
Matrix product (dot product) | a %*% b |
a * b |
MatrixOp c = a . b |
Outer product | outer(a,b) or a %o% b |
b * a |
MatrixMultiply a,b |
Cross product | crossprod(a,b) or t(a) %*% b |
Cross a,b |
|
Kronecker product | kronecker(a,b) |
kron(a,b) |
MatrixOp c = tensorProduct(a,b) |
Matrix division, b ⋅ a−1 | a / b |
MatrixOp c = a / b |
|
Left matrix division, b−1 ⋅ a (solve linear equations) |
solve(a,b) |
a \ b |
? |
Description | R | MATLAB | IGOR |
---|---|---|---|
Non-zero elements, indices | which(a != 0) |
find(a) |
Duplicate a,b b = (a != 0) ? p : NaN WaveTransform zapnans b |
Non-zero elements, array indices | which(a != 0, arr.ind=T) |
[i j] = find(a) |
Write a loop |
Vector of non-zero values | ij <- which(a != 0, arr.ind=T); v <- a[ij] |
[i j v] = find(a) |
a = (a[p][q] != 0) ? a[p][q] : NaN Redimension/N=(numpnts(a)) a WaveTransform a |
Condition, indices | which(a>5.5) |
find(a>5.5) |
Duplicate a,b b = a[p][q] > 5.5 ? p : NaN WaveTransform zapnans b |
Return values | ij <- which(a>5.5, arr.ind=T); v <- a[ij] |
Duplicate a,b b = a[p][q] > 5.5 ? a[p][q] : NaN WaveTransform zapnans b |
|
Zero out elements above 5.5 | a .* (a>5.5) |
a = (a[p][q] > 5.5) ? 0 : a[p][q] |
Description | R | MATLAB | IGOR |
---|---|---|---|
Define a 3-way array | a = cat(3, [1 2; 1 2],[3 4; 3 4]); |
Make/N=(2,2,2) a={{{1,1},{2,2}},{{3,3},{4,4}}} |
|
a(1,:,:) |
Make/N=(1,2,2) b b[0][][]=a[p][q][r] |
Description | R | MATLAB | IGOR |
---|---|---|---|
Reading from a file (2d) | f <- read.table("data.txt") |
f = load('data.txt') |
Data > Load Waves... |
Reading fram a CSV file (2d) | f <- read.table(file="data.csv", sep=";") |
x = dlmread('data.csv', ';') |
LoadWave/J/M/D/N=wave/O/K=0 "data.csv" |
Writing to a file (2d) | write(f,file="data.txt") |
save -ascii data.txt f |
Save/J/M="\n"/W f as "data.txt" |
###Plotting
Description | R | MATLAB | IGOR |
---|---|---|---|
1d line plot | plot(a, type="l") |
plot(a) |
display a |
2d scatter plot | plot(x[,1],x[,2]) |
plot(x(:,1),x(:,2),'o') |
display a vs b |
Two graphs in one plot | plot(x1,y1, x2,y2) |
display a, b or display a1 vs b1, a2 vs b2 |
|
Overplotting: Add new plots to current | plot(x1,y1) matplot(x2,y2,add=T) |
plot(x1,y1) hold on plot(x2,y2) |
display a; AppendToGraph b |
subplots | subplot(211) |
Add to procedure window#include <InsertSubwindowInGraph> |
|
Plotting symbols and color | plot(x,y,type="b",col="red") |
plot(x,y,'ro-') |
Double-click trace on graph |
Description | R | MATLAB | IGOR |
---|---|---|---|
Turn on grid lines | grid() |
grid on |
ModifyGraph grid=1 |
1:1 aspect ratio | plot(c(1:10,10:1), asp=1) |
axis equal |
ModifyGraph width={Plan,1,bottom,left} |
Set axes manually | plot(x,y, xlim=c(0,10), ylim=c(0,5)) |
axis([ 0 10 0 5 ]) |
SetAxis left 0,5 SetAxis bottom 0,10 |
Axis labels and titles | plot(1:10, main="title", xlab="x-axis", ylab="y-axis") |
title('title') xlabel('x-axis') ylabel('y-axis') |
Label left "y-axis" Label bottom "x-axis" |
Description | R | MATLAB | IGOR |
---|---|---|---|
logarithmic y-axis | plot(x,y, log="y") |
semilogy(a) |
ModifyGraph log(left)=1 |
logarithmic x-axis | plot(x,y, log="x") |
semilogx(a) |
ModifyGraph log(bottom)=1 |
logarithmic x and y axes | plot(x,y, log="xy") |
loglog(a) |
ModifyGraph log=1 |
Description | R | MATLAB | IGOR |
---|---|---|---|
Filled plot | plot(t,s, type="n", xlab="", ylab="") polygon(t,s, col="lightblue") polygon(t,c, col="lightgreen") |
fill(t,s,'b', t,c,'g') |
Display a ModifyGraph mode=7 |
Stem-and-Leaf plot | stem(x[,3]) |
? |
Description | R | MATLAB | IGOR |
---|---|---|---|
Defining functions | f <- function(x) sin(x/3) - cos(x/5) |
f = inline('sin(x/3) - cos(x/5)') |
Make a = sin(x/3) - cos(x/5 Default wave length is 128 |
Plot a function for given range | plot(f, xlim=c(0,40), type='p') |
ezplot(f,[0,40]) fplot('sin(x/3) - cos(x/5)',[0,40]) |
Display a[0,40] |
Description | R | MATLAB | IGOR |
---|---|---|---|
theta = 0:.001:2*pi; r = sin(2*theta); |
|||
Polar plot | See polar.plot |
polar(theta, rho) |
#include <New Polar Graphs> in procedure window |
Description | R | MATLAB | IGOR |
---|---|---|---|
hist(rnorm(1000)) |
hist(randn(1000,1)) |
Make/O/N=1000 a=gnoise(1) Make/N=0/O a_Hist Histogram/B=3 a,a_Hist Display a_Hist |
|
hist(rnorm(1000), breaks= -4:4) |
hist(randn(1000,1), -4:4) |
As above exceptMake/N=8/O a_Hist Histogram/B={-4,1,8} a,a_Hist |
|
hist(rnorm(1000), breaks=c(seq(-5,0,0.25), seq(0.5,5,0.5)), freq=F) |
Concatenate two sub-histograms | ||
plot(apply(a,1,sort),type="l") |
plot(sort(a)) |
? |
Description | R | MATLAB | IGOR |
---|---|---|---|
Contour plot | contour(z) |
contour(z) |
Display; AppendMatrixContour z |
Filled contour plot | filled.contour(x,y,z, nlevels=7, color=gray.colors) |
contourf(z); colormap(gray) |
Display; AppendMatrixContour z ModifyContour z fill=1 |
Plot image data | image(z, col=gray.colors(256)) |
image(z) colormap(gray) |
newimage z ordisplay;appendimage z |
Direction field vectors | quiver() |
DisplayHelpTopic "ModifyGraph for Traces" |
Description | R | MATLAB | IGOR |
---|---|---|---|
f <- function(x,y) x*exp(-x^2-y^2) n <- seq(-2,2, length=40) z <- outer(n,n,f) |
n=-2:.1:2; [x,y] = meshgrid(n,n); z=x.*exp(-x.^2-y.^2); |
||
Mesh plot | persp(x,y,z, theta=30, phi=30, expand=0.6, ticktype='detailed') |
mesh(z) |
ImageInterpolate/CMSH voronoi a AppendToGizmo surface=root:a,name=surface0 ModifyGizmo ModifyObject=surface0,objectType=surface,property={ fillMode,3} |
Surface plot | persp(x,y,z, theta=30, phi=30, expand=0.6, col='lightblue', shade=0.75, ltheta=120, ticktype='detailed') |
surf(x,y,z) or surfl(x,y,z) |
Concatenate {x,y,z},wave3D NewGizmo AppendToGizmo Scatter=root:wave3d,name=surface0 |
Description | R | MATLAB | IGOR |
---|---|---|---|
3d scatter plot | cloud(z~x*y) |
plot3(x,y,z,'k+') |
Concatenate {x,y,z},wave3D NewGizmo AppendToGizmo Scatter=root:wave3d,name=scatter0 |
Description | R | MATLAB | IGOR |
---|---|---|---|
PostScript | postscript(file="foo.eps") plot(1:10) dev.off() |
plot(1:10) print -depsc2 foo.eps |
SavePict/E=-3 as "foo.eps" |
pdf(file='foo.pdf') |
SavePict/E=-2 as "foo.pdf" |
||
SVG (vector graphics for www) | devSVG(file='foo.svg') |
SavePict/E=-9 as "foo.svg" |
|
PNG (raster graphics) | png(filename = "Rplot%03d.png" |
print -dpng foo.png |
SavePict/E=-5 as "foo.png" |
Description | R | MATLAB | IGOR |
---|---|---|---|
Create sets | a <- c(1,2,2,5,2) b <- c(2,3,4) |
a = [ 1 2 2 5 2 ]; b = [ 2 3 4 ]; |
Create sets |
Set unique | unique(a) |
unique(a) |
FindDuplicates/RN=c a |
Set union | union(a,b) |
union(a,b) |
? via loop |
Set intersection | intersect(a,b) |
intersect(a,b) |
? via loop |
Set difference | setdiff(a,b) |
setdiff(a,b) |
? via loop |
Set exclusion | setdiff(union(a,b),intersect(a,b)) |
setxor(a,b) |
? via loop |
True for set member | is.element(2,a) or 2 %in% a |
ismember(2,a) |
FindValue/I=2 a |
Description | R | MATLAB | IGOR |
---|---|---|---|
Average | apply(a,2,mean) |
mean(a) |
mean(a) Note: WaveStats a or ImageStats a gives many statistics |
Median | apply(a,2,median) |
median(a) |
median(a) or statsmedian(a) |
Standard deviation | apply(a,2,sd) |
std(a) |
WaveStats a |
Variance | apply(a,2,var) |
var(a) |
Variance(a) |
Correlation coefficient | cor(x,y) |
corr(x,y) |
StatsCorrelation x,y or Correlate x,y |
Covariance | cov(x,y) |
cov(x,y) |
MatrixCorr/COV x,y |
Description | R | MATLAB | IGOR |
---|---|---|---|
Straight line fit | z <- lm(y~x) plot(x,y) abline(z) |
z = polyval(polyfit(x,y,1),x) plot(x,y,'o', x,z ,'-') |
CurveFit line b /X=a /D |
Linear least squares y = a__x + b |
solve(a,b) |
a = x\y |
MatrixLLS a,b |
Polynomial fit | polyfit(x,y,3) |
`CurveFit Poly2D 3 a /Ywave=b |
Description | R | MATLAB | IGOR |
---|---|---|---|
Find zeros of polynomial | polyroot(c(1,-1,-1)) |
roots([1 -1 -1]) |
Make a={1,-1,-1} FindRoots/P=a |
Find a zero near x = 1 | f = inline('1/x - (x-1)') fzero(f,1) |
? | |
Solve symbolic equations | solve('1/x = x-1') |
? | |
Evaluate polynomial | polyval([1 2 1 2],1:10) |
? |
Description | R | MATLAB | IGOR |
---|---|---|---|
Discrete difference function and approximate derivative | diff(a) |
? | |
Solve differential equations | Differentiate a ? |
Description | R | MATLAB | IGOR |
---|---|---|---|
Fast fourier transform | fft(a) |
fft(a) |
FFT a |
Inverse fourier transform | fft(a, inverse=TRUE) |
ifft(a) |
IFFT a |
Description | R | MATLAB | IGOR |
---|---|---|---|
Factorization | FUN <- function(x) { x <- as.integer(x) div <- seq_len(abs(x)) factors <- div[x %% div == 0L] factors <- list(neg = -factors, pos = factors) return(factors) } |
factor() |
Only PrimeFactors a |
Description | R | MATLAB | IGOR |
---|---|---|---|
Script file extension | .R |
.m |
.ipf |
Comment symbol (rest of line) | # |
% |
// |
Import library functions | library(RSvgDevice) |
% must be in MATLABPATH |
#include "Name" without .ipf extension. Must be in User Procedures Folder |
Eval | string <- "a <- 234" eval(parse(text=string)) |
string='a=234'; eval(string) |
String a = "234" str2num(a) |
Description | R | MATLAB | IGOR |
---|---|---|---|
for-statement | for(i in 1:5) print(i) |
for i=1:5; disp(i); end |
|
Multiline for statements | for(i in 1:5) { print(i) print(i*2) } |
for i=1:5 disp(i) disp(i*2) end |
for(i=0;i<10;i+=1) print i endfor |
Description | R | MATLAB | IGOR |
---|---|---|---|
if-statement | if (1>0) a <- 100 |
if 1>0 a=100; end |
if (1 > 0) a = 100 endif |
if-else-statement | if 1>0 a=100; else a=0; end |
if (1 < 0) a = 100 else a=0 endif |
|
Ternary operator (if?true:false) | ifelse(a>0,a,0) |
a = a[] > 0 ? a[p] : 0 |
Description | R | MATLAB | IGOR |
---|---|---|---|
Most recent evaluated expression | .Last.value |
ans |
Arrow up |
List variables loaded into memory | objects() |
whos or who |
Data > Data Browser |
Clear variable x from memory | rm(x) |
clear x or clear [all] |
KillVariables or KillStrings orKillWaves |
print(a) |
disp(a) |
Print a |
Description | R | MATLAB | IGOR |
---|---|---|---|
List files in directory | list.files() or dir() |
dir or ls |
Data > Data Browser |
List script files in directory | list.files(pattern="\.r$") |
what |
Window > Procedure Window |
Displays the current working directory | getwd() |
pwd |
GetDataFolder(0) |
Change working directory | setwd('foo') |
cd foo |
SetDataFolder $expDataFolderName |
Invoke a System Command | system("notepad") |
!notepad |
Execute "command" |
##Credits
- The original R-MATLAB cheat sheet was taken from ©2006 Vidar Bronken Gundersen, /mathesaurus.sf.net
- An edited version with added IgorPro commands was made by Ben Gallarda