Multiply matrices of different sizes
28 views (last 30 days)
Background: I've got 7 years worth of Power data for a wind farm binned into 100 bins of wind speed i.e. 100 x 7 matrix. I've got probability of each of that bin happening i.e. 100 x 1 matrix. I would like to multiply the elements of 100x7 matrix by elements in a 100x1 matrix to get cumulative probability of power output.
In simple term: how do I multiply 100x7 matrix by 100x 1 matrix? Tried bsxfun but didn't work.
Jan on 19 Mar 2018
Edited: Jan on 19 Mar 2018
for yrs = 1:length(years)
[N,edges,bin] = histcounts(SPEED(:,yrs),100);
COUNT = N.'; % Here  is a waste of time
nelements = sum(COUNT);
prob_bins = COUNT ./ nelements;
Area = bsxfun(@times, Pow_ave(:,yrs), prob_bins);
Area is overwritten in each iteratotion. Maybe you want:
Area(:, yrs) = Pow_ave(:,yrs) .* prob_bins;
As far as I can see, Pow_ave(:, yrs) and prob_bins are both 100x1 vectors, so there is no need for bsxfun.
More Answers (1)
Geoff Hayes on 14 Mar 2018
NMans - if you want to multiply each column of the 100x7 matrix by the 100x1 matrix, then you could use bsxfun as
X = randi(255,100,7); % generate some dummy data
Y = rand(100,1);
Z = bsxfun(@times,X,Y);
Or are you trying to do something else?