**This is an old revision of the document!**

# Matlab Tips

## General tips

- If you plan to use parallel for-loop, put the parfor statement in the outermost loop to reduce inter-process communication.

## Simple text progress bar

disp(' '); for i = 1:x fprintf('\b\b\b\b\b\b%05.2f%%', i/x*100); %%%%% Do your biddings here %%%%% end disp(' ');

## Highly unscientific benchmark of prod()

### Sparse vs Dense

>> a = rand(1000); >> b = eye(1000); >> c = sparse(a); >> d = sparse(b); >> tic; for i = 1:10000; prod(a); end; toc Elapsed time is 7.212577 seconds. >> tic; for i = 1:10000; prod(b); end; toc Elapsed time is 3.566560 seconds. >> tic; for i = 1:10000; prod(c); end; toc Elapsed time is 27.455137 seconds. >> tic; for i = 1:10000; prod(d); end; toc Elapsed time is 0.030041 seconds. >> tic; for i = 1:10000; prod(a); end; toc Elapsed time is 7.250969 seconds. >> tic; for i = 1:10000; prod(b); end; toc Elapsed time is 3.645549 seconds. >> tic; for i = 1:10000; prod(c); end; toc Elapsed time is 27.538796 seconds. >> tic; for i = 1:10000; prod(d); end; toc Elapsed time is 0.029214 seconds. >> >> n = 100000; >> a = rand(n,1); >> b = 1; >> tic; for i = 1:n; prod(a); end; toc; Elapsed time is 4.849304 seconds. >> tic; for i = 1:n; b = b * prod(a(i)); end; toc Elapsed time is 0.004573 seconds. >>

### Prod vs repeated multiplication

#### Script

clear; n = 10000; a = rand(n,1) * exp(1); b = 1; tic; for i = 1:n; c = prod(a); end; toc; tic; for j = 1:n for i = 1:n; b = b * a(i); end; end toc;