matrix multiplication in matlab
    3 views (last 30 days)
  
       Show older comments
    
XYZ=[0.5141 0.3239 0.1604;0.2651 0.6702 0.0641;0.0241 0.1228 0.8444];
  for i=1:768
      for h=1:768
         nf=mR(i,h);
         fd=mG(i,h);
         gs=mB(i,h);
       bv=[nf fd gs];
       hd=bv';
       disp(hd);
        mmul=double(hd).*XYZ;
       disp(mmul);
      end
  end
Error using .* Matrix dimensions must agree.
Error in Untitled6 (line 22) mmul=double(hd).*XYZ;
0 Comments
Answers (1)
  Jan
      
      
 on 29 Mar 2017
        All we see is the failing code, and we have to guess its intention. Better explain this to get the solution you want.
double(hd) .* XYZ
[3 x 1]    .* [3 x 3]
Do you want the result to be [3 x 3]? This works in Matlab >= 2016b with automatic expanding. With older versions, the elementwise multiplication demands for two arguments of the same size. Then:
mmul = bsxfun(@times, double(hd), XYZ);
or
mmul = double(hd(:, [1,1,1]) .* XYZ;
But perhaps you want a matrix multiplication?
mmul = double(bv) * XYZ;
See Also
Categories
				Find more on Structures in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

