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

formatting - SAS SQL Datepart function returning odd values -

c++ - Apple Mach-O Linker Error(Duplicate Symbols For Architecture armv7) -

php - Yii 2: Unable to find a class into the extension 'yii2-admin' -