Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function trialcode
- ENGSPD_1 = rand(1812890, 1);
- Eng_Spd = rand(125000, 1);
- Speed = rand(412730, 1);
- TIME = rand(412730, 1);
- Time = rand(125000, 1);
- engine_speed_2 = rand(14060, 1);
- time_1 = rand(1812890, 1);
- time_2 = rand(14060, 1);
- save('tmp.mat');
- data = load('tmp.mat');
- t1 = timeit(@()wtf(ENGSPD_1, Eng_Spd, Speed, TIME, Time, engine_speed_2, time_1, time_2));
- t2 = timeit(@()ok(ENGSPD_1, Eng_Spd, Speed, TIME, Time, engine_speed_2, time_1, time_2));
- t3 = timeit(@()oker(data));
- tmp = ver;
- fprintf(['Benchmarking Results, MATLAB %s\n' ...
- '=====================================\n' ...
- 'rahnema1: %0.5f\n' ...
- 'excaza: %0.5f\n' ...
- 'excaza (2): %0.5f\n\n' ...
- 'Save\\Load overhead intentionally ignored\n'], ...
- tmp.Release, t1, t2, t3);
- end
- function wtf(ENGSPD_1, Eng_Spd, Speed, TIME, Time, engine_speed_2, time_1, time_2)
- speed_whos=[whos('*P*');whos('*p*')];
- time_whos=[whos('*T*');whos('*t*')];
- name_speed={speed_whos(:).name};
- name_time={time_whos(:).name};
- sz_speed =reshape([speed_whos(:).size],2,[]).';
- sz_time = reshape([time_whos(:).size],2,[]).';
- [ ~,i_time] =sortrows(sz_time);
- [ ~,i_speed] =sortrows(sz_speed);
- name_speed = name_speed(i_speed);
- name_time = name_time(i_time);
- data = struct;
- for k = 1: numel(name_time)
- eval('data(k).time = eval(name_time{k});data(k).speed = eval(name_speed{k});');
- end
- end
- function ok(ENGSPD_1, Eng_Spd, Speed, TIME, Time, engine_speed_2, time_1, time_2)
- % Identify time and speed variable using regular expressions
- % Assumes time variables contain 'time' (case insensitive)
- % Assumes speed variables contain 'spd', 'sped', or 'speed' (case insensitive)
- timevars = whos('-regexp', '[T|t][I|i][M|m][E|e]');
- speedvars = whos('-regexp', '[S|s][P|p][E|e]{0,2}[D|d]');
- % Pair timeseries and data arrays together. Data is only coupled if
- % the number of rows in the timeseries is exactly the same as the
- % number of rows in the data array.
- timesizes = vertcat(speedvars(:).size); % Concatenate timeseries sizes
- speedsizes = vertcat(timevars(:).size); % Concatenate speed array sizes
- % Find intersection and their locations in the structures returned by whos
- % By using intersect we only get the data that is matched
- [sizes, timeidx, speedidx] = intersect(timesizes(:,1), speedsizes(:,1));
- % Preallocate structure
- ndata = length(sizes);
- groupeddata(ndata).time = [];
- groupeddata(ndata).speed = [];
- % Unavoidable (without saving/loading data) eval loop :|
- for ii = 1:ndata
- groupeddata(ii).time = eval('timevars(timeidx(ii)).name');
- groupeddata(ii).speed = eval('speedvars(speedidx(ii)).name');
- end
- end
- function oker(oldworkspace)
- varnames = fieldnames(oldworkspace);
- timevars = regexpi(varnames, '.*time.*', 'match', 'once');
- timevars(cellfun('isempty', timevars)) = [];
- speedvars = regexpi(varnames, '.*spe{0,2}d.*', 'match', 'once');
- speedvars(cellfun('isempty', speedvars)) = [];
- timesizes = zeros(length(timevars), 2);
- for ii = 1:length(timevars)
- timesizes(ii, :) = size(oldworkspace.(timevars{ii}));
- end
- speedsizes = zeros(length(speedvars), 2);
- for ii = 1:length(speedvars)
- speedsizes(ii, :) = size(oldworkspace.(speedvars{ii}));
- end
- [sizes, timeidx, speedidx] = intersect(timesizes(:,1), speedsizes(:,1));
- ndata = length(sizes);
- groupeddata(ndata).time = [];
- groupeddata(ndata).speed = [];
- for ii = 1:ndata
- groupeddata(ii).time = oldworkspace.(timevars{timeidx(ii)});
- groupeddata(ii).speed = oldworkspace.(speedvars{speedidx(ii)});
- end
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement