Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function testcode
- warning('off', 'MATLAB:timeit:HighOverhead');
- nrows = 10;
- niter = 1;
- asdf = rand(nrows,2);
- shift = zeros(niter, 3);
- for ii = 1:niter
- fh_A = @() A(asdf);
- shift(ii, 1) = timeit(fh_A);
- fh_B = @() B(asdf);
- shift(ii, 2) = timeit(fh_B);
- fh_C = @() C(asdf);
- shift(ii, 3) = timeit(fh_C);
- end
- fprintf('Current: %f seconds\ncircshift: %f seconds\ninline: %f seconds\n\n', mean(shift, 1))
- idx = 5;
- row = [NaN, NaN];
- insert = zeros(niter, 3);
- for ii = 1:niter
- fh_D = @() D(asdf, idx, row);
- insert(ii, 1) = timeit(fh_D);
- fh_E = @() E(asdf, idx, row);
- insert(ii, 2) = timeit(fh_E);
- fh_F = @() F(asdf, idx, row);
- insert(ii, 3) = timeit(fh_F);
- end
- fprintf('Current: %f seconds\nInline: %f seconds\nFEX: %f seconds\n\n', mean(insert, 1))
- warning('on', 'MATLAB:timeit:HighOverhead');
- end
- function in = A(in)
- in = [ in(2:end,:) ; [ Inf Inf ] ];
- end
- function in = B(in)
- in = circshift(in, -1, 1);
- in(end,:) = Inf;
- end
- function in = C(in)
- in(1:end-1) = in(2:end);
- in(end,:) = Inf;
- end
- function in = D(in, idx, row)
- in = [ in(1:(idx - 1),:) ; row ; in(idx:(end - 1),:) ];
- end
- function in = E(in, idx, row)
- in((idx + 1):end, :) = in(idx:(end-1), :);
- in(idx, :) = row;
- end
- function in = F(in, idx, row)
- ind = [1:size(in, 1) idx-1];
- [~, ind] = sort(ind);
- in = [in; row];
- in = in(ind,:);
- in(end,:) = [];
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement