Advertisement
Guest User

Untitled

a guest
May 26th, 2016
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.35 KB | None | 0 0
  1. function testcode
  2. warning('off', 'MATLAB:timeit:HighOverhead');
  3. nrows = 10;
  4. niter = 1;
  5. asdf = rand(nrows,2);
  6.  
  7. shift = zeros(niter, 3);
  8. for ii = 1:niter
  9. fh_A = @() A(asdf);
  10. shift(ii, 1) = timeit(fh_A);
  11.  
  12. fh_B = @() B(asdf);
  13. shift(ii, 2) = timeit(fh_B);
  14.  
  15. fh_C = @() C(asdf);
  16. shift(ii, 3) = timeit(fh_C);
  17. end
  18. fprintf('Current: %f seconds\ncircshift: %f seconds\ninline: %f seconds\n\n', mean(shift, 1))
  19.  
  20. idx = 5;
  21. row = [NaN, NaN];
  22.  
  23. insert = zeros(niter, 3);
  24. for ii = 1:niter
  25. fh_D = @() D(asdf, idx, row);
  26. insert(ii, 1) = timeit(fh_D);
  27.  
  28. fh_E = @() E(asdf, idx, row);
  29. insert(ii, 2) = timeit(fh_E);
  30.  
  31. fh_F = @() F(asdf, idx, row);
  32. insert(ii, 3) = timeit(fh_F);
  33. end
  34. fprintf('Current: %f seconds\nInline: %f seconds\nFEX: %f seconds\n\n', mean(insert, 1))
  35.  
  36. warning('on', 'MATLAB:timeit:HighOverhead');
  37. end
  38.  
  39. function in = A(in)
  40. in = [ in(2:end,:) ; [ Inf Inf ] ];
  41. end
  42.  
  43. function in = B(in)
  44. in = circshift(in, -1, 1);
  45. in(end,:) = Inf;
  46. end
  47.  
  48. function in = C(in)
  49. in(1:end-1) = in(2:end);
  50. in(end,:) = Inf;
  51. end
  52.  
  53. function in = D(in, idx, row)
  54. in = [ in(1:(idx - 1),:) ; row ; in(idx:(end - 1),:) ];
  55. end
  56.  
  57. function in = E(in, idx, row)
  58. in((idx + 1):end, :) = in(idx:(end-1), :);
  59. in(idx, :) = row;
  60. end
  61.  
  62. function in = F(in, idx, row)
  63. ind = [1:size(in, 1) idx-1];
  64. [~, ind] = sort(ind);
  65. in = [in; row];
  66. in = in(ind,:);
  67. in(end,:) = [];
  68. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement