Differences

This shows you the differences between two versions of the page.

Link to this comparison view

public:matlab_tips [2016/04/04 15:50]
fangfufu old revision restored (2016/04/02 07:41)
public:matlab_tips [2018/03/31 01:38]
Line 1: Line 1:
-====== 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 ===== 
-<code matlab> 
-disp(' ​    '​);​ 
-for i = 1:x 
-    fprintf('​\b\b\b\b\b\b%05.2f%%',​ i/x*100); 
-    %%%%% Do your biddings here %%%%% 
-end 
-disp(' '); 
-</​code>​ 
  
-===== Highly unscientific benchmark of prod() ===== 
-==== Sparse vs Dense ==== 
-<code matlab> 
->> 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. 
->> ​ 
-</​code>​ 
- 
-==== Prod vs repeated multiplication ==== 
-=== Script === 
-<code matlab> 
-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; 
-</​code>​ 
-=== Results === 
-<code matlab> 
->> test 
-Elapsed time is 0.168450 seconds. 
-Elapsed time is 1.003991 seconds. 
-</​code>​ 
-Note that with repeated multiplication your numerical accuracy will suffer too! 
  • public/matlab_tips.txt
  • Last modified: 2018/03/31 01:38
  • (external edit)