MATLAB Answers

subrutine to multiplication multidimensional matrix

Asked by agustin darrosa on 14 Mar 2013

Can you tell me a subrutine to multiplication multidimensional matrix in Matlab?

thanks

  1 Comment

Andrei Bobrov
on 14 Mar 2013

Please give example

Products

No products are associated with this question.

4 Answers

Answer by Andrei Bobrov
on 14 Mar 2013
Edited by Andrei Bobrov
on 19 Mar 2013
 Accepted answer

use bsxfun

ADDED on agustin darrosa's comment [EDIT] ;)

if numel(a) == numel(b)
    c1 = a - permute(b,[2 1 3 4]);
    c2 = permute(a,[2 1 3 4]) - b;
end

  11 Comments

Jan Simon
on 18 Mar 2013

@agustin: Welcome in the forum! Here are a lot of non-native speakers and asking questions for clarifications is a usual process for finding solutions.

How do you define the multiplikation of multi-dimensional arrays? This is not a standard procedure in a mathematical sense, so we have to know, what you want as result.

agustin darrosa on 18 Mar 2013

I just want to see the result of the multiplication of matrices

Let a and b multidimensional array. I want to see the resulting c

c=a*b

I hope I explained correctly

thanks

Andrei Bobrov
on 19 Mar 2013

Comment by agustin darrosa

Thanks andrei but i have this error:

1. First i define the matrixs a and b

2. then I insert

if numel(a) == numel(b):

c = a - permute(b,[2 1 3 4]);

or

c = permute(a,[2 1 3 4]) - b; ??? if numel(a) == numel(b): | Error: Expression or statement is incomplete or incorrect.

but i have this problem and i don´t know why


Answer by James Tursa
on 15 Mar 2013

You haven't given an example so we don't really know what you want yet. Maybe it is this, which does a matrix multiply on the first two dimensions:

http://www.mathworks.com/matlabcentral/fileexchange/25977-mtimesx-fast-matrix-multiply-with-multi-dimensional-support

  0 Comments


Answer by Jan Simon
on 19 Mar 2013
A = rand(2,3,2,2);
B = rand(3,2,2,2);
% A simple loop:
R = zeros(2,2,2,2);
for i1 = 1:2
  for i2 = 1:2
    R(:, :, i1, i2) = A(:, :, i1, i2) * B(:, :, i1, i2);
  end
end

Is this what you want? If so, note that this is actually a list of DOT products only. Then reshape B to a [3 x 8] array, A to a [8 x 3] (which needs a permute(A, [1,3,4,2]) also) and multiply these matrices. Finally a reshaping give the same R.

Unfortunately I do not dare to post the code, because I do not have Matlab for testing at the moment.

  0 Comments


Answer by agustin darrosa on 19 Mar 2013

thanks you!!!

  0 Comments


Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply today