MATLAB: How to apply loop on 2 cell arrays where operation required is column wise multiplication of vectors in each cell

column wise cell multiplication in loopMATLAB

I have A=cell with 64 arrays each of 1X7 vector, and B= cell with 1806 arrays each of 7×3 matrices. I want to multiply each column of 7×3 matrix of cell B with transpose of A vectors i-e each column is multlipled element wise with 7×1 vector of cell A.for example
A{1}=[2 4 5 3 2 1 1]
B{1}=[1 0 0; 0 0 1;1 0 0;0 0 1;0 1 0;1 0 0;0 1 0]
R{1,1}=
[2 0 0
0 0 4
5 0 0
0 0 3
0 2 0
1 0 0
0 1 0]
and run the loop over all A and B such that the resultant is R{64,1806} cell
I tried this:
for m=1:numel(B)
for i=1:numel(A)
for k=1:3 %Bhas 3 columns
R=B{m}(:,k).*total_timereq_for_all_machines{i}';
end
count=count+1
T{m,i}=R;
end
end
but this is giving me R as 7X1 vector while I want R as 7X3 matrix. how can I make corrections in this?

Best Answer

I can’t run your code because I don’t have your data.
See if this works:
for m=1:numel(B)
for i=1:numel(A)
T{m,i} = bsxfun(@times, A{i}, B{m}')';
count=count+1
end
end
Note that numel may not be your best option. (I’m not certain what it would return in your code.) Consider using size instead.