Advertisement
Guest User

Untitled

a guest
Oct 27th, 2016
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.49 KB | None | 0 0
  1. function trialcode
  2. ENGSPD_1 = rand(1812890, 1);
  3. Eng_Spd = rand(125000, 1);
  4. Speed = rand(412730, 1);
  5. TIME = rand(412730, 1);
  6. Time = rand(125000, 1);
  7. engine_speed_2 = rand(14060, 1);
  8. time_1 = rand(1812890, 1);
  9. time_2 = rand(14060, 1);
  10.  
  11. save('tmp.mat');
  12. data = load('tmp.mat');
  13.  
  14. t1 = timeit(@()wtf(ENGSPD_1, Eng_Spd, Speed, TIME, Time, engine_speed_2, time_1, time_2));
  15. t2 = timeit(@()ok(ENGSPD_1, Eng_Spd, Speed, TIME, Time, engine_speed_2, time_1, time_2));
  16. t3 = timeit(@()oker(data));
  17.  
  18. tmp = ver;
  19. fprintf(['Benchmarking Results, MATLAB %s\n' ...
  20. '=====================================\n' ...
  21. 'rahnema1: %0.5f\n' ...
  22. 'excaza: %0.5f\n' ...
  23. 'excaza (2): %0.5f\n\n' ...
  24. 'Save\\Load overhead intentionally ignored\n'], ...
  25. tmp.Release, t1, t2, t3);
  26. end
  27.  
  28. function wtf(ENGSPD_1, Eng_Spd, Speed, TIME, Time, engine_speed_2, time_1, time_2)
  29. speed_whos=[whos('*P*');whos('*p*')];
  30. time_whos=[whos('*T*');whos('*t*')];
  31.  
  32. name_speed={speed_whos(:).name};
  33. name_time={time_whos(:).name};
  34.  
  35. sz_speed =reshape([speed_whos(:).size],2,[]).';
  36. sz_time = reshape([time_whos(:).size],2,[]).';
  37.  
  38. [ ~,i_time] =sortrows(sz_time);
  39. [ ~,i_speed] =sortrows(sz_speed);
  40.  
  41. name_speed = name_speed(i_speed);
  42. name_time = name_time(i_time);
  43. data = struct;
  44. for k = 1: numel(name_time)
  45. eval('data(k).time = eval(name_time{k});data(k).speed = eval(name_speed{k});');
  46. end
  47. end
  48.  
  49. function ok(ENGSPD_1, Eng_Spd, Speed, TIME, Time, engine_speed_2, time_1, time_2)
  50. % Identify time and speed variable using regular expressions
  51. % Assumes time variables contain 'time' (case insensitive)
  52. % Assumes speed variables contain 'spd', 'sped', or 'speed' (case insensitive)
  53. timevars = whos('-regexp', '[T|t][I|i][M|m][E|e]');
  54. speedvars = whos('-regexp', '[S|s][P|p][E|e]{0,2}[D|d]');
  55.  
  56. % Pair timeseries and data arrays together. Data is only coupled if
  57. % the number of rows in the timeseries is exactly the same as the
  58. % number of rows in the data array.
  59. timesizes = vertcat(speedvars(:).size); % Concatenate timeseries sizes
  60. speedsizes = vertcat(timevars(:).size); % Concatenate speed array sizes
  61.  
  62. % Find intersection and their locations in the structures returned by whos
  63. % By using intersect we only get the data that is matched
  64. [sizes, timeidx, speedidx] = intersect(timesizes(:,1), speedsizes(:,1));
  65.  
  66. % Preallocate structure
  67. ndata = length(sizes);
  68. groupeddata(ndata).time = [];
  69. groupeddata(ndata).speed = [];
  70.  
  71. % Unavoidable (without saving/loading data) eval loop :|
  72. for ii = 1:ndata
  73. groupeddata(ii).time = eval('timevars(timeidx(ii)).name');
  74. groupeddata(ii).speed = eval('speedvars(speedidx(ii)).name');
  75. end
  76. end
  77.  
  78. function oker(oldworkspace)
  79. varnames = fieldnames(oldworkspace);
  80.  
  81. timevars = regexpi(varnames, '.*time.*', 'match', 'once');
  82. timevars(cellfun('isempty', timevars)) = [];
  83. speedvars = regexpi(varnames, '.*spe{0,2}d.*', 'match', 'once');
  84. speedvars(cellfun('isempty', speedvars)) = [];
  85.  
  86. timesizes = zeros(length(timevars), 2);
  87. for ii = 1:length(timevars)
  88. timesizes(ii, :) = size(oldworkspace.(timevars{ii}));
  89. end
  90. speedsizes = zeros(length(speedvars), 2);
  91. for ii = 1:length(speedvars)
  92. speedsizes(ii, :) = size(oldworkspace.(speedvars{ii}));
  93. end
  94.  
  95. [sizes, timeidx, speedidx] = intersect(timesizes(:,1), speedsizes(:,1));
  96.  
  97. ndata = length(sizes);
  98. groupeddata(ndata).time = [];
  99. groupeddata(ndata).speed = [];
  100.  
  101. for ii = 1:ndata
  102. groupeddata(ii).time = oldworkspace.(timevars{timeidx(ii)});
  103. groupeddata(ii).speed = oldworkspace.(speedvars{speedidx(ii)});
  104. end
  105. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement