bsxfun - Matlab optimisation query, avoiding that repmat -



bsxfun - Matlab optimisation query, avoiding that repmat -

this simple question, can't see improve reply , maybe else can! here code:

example variables

nsim = 3000; nrow = 10000; info = zeros(1, 5, nrow); info (:, 1:4, :) = rand(4, nrow)*0.5; % 4 columns of duration values info (:, 5, :) = 1000; % 1 column of actual value basis.increaserate = 1 + (rand(nsim, 4)*0.1);

example calculation

datawithsim = repmat(data(:, 1:4,:),nsim, 1, 1); increasefactors = bsxfun(@power, basis.increaserate, datawithsim); values = bsxfun(@times, data(:,5,:), prod(increasefactors,2));

the need repmat feels wrong, can't see way avoid it.

effectively i'm doing increase^data , didn't want have loop through 2 dimensions (sims or data rows). dummy info can ordered way choose, values output needs nsim nrow matrix.

any ideas welcome. thanks.

you don't need utilize repmat. can straight feed "submatrix" data -

increasefactors = bsxfun(@power, basis.increaserate, data(:,1:4,:));

bsxfun internally takes care of expansion of singleton dimensions, first dimension (rows) of data in case. since basis.increaserate has nsim rows , data(:,1,4,:) has 1 row, expanded have same number of rows, i.e. nsim , job of repmat-ing/expanding internally.

rest of code stays same.

matlab bsxfun

Comments

Popular posts from this blog

maven fortify plugin : Unable to load build session with ID XXXXX .. See log file for more details -

c# - Primavera WebServices does not return any data -

android - Display emoji panel with genymotion - keyboard/touch input? -