Multidimensional matrix multiplication elementwise

조회 수: 1 (최근 30일)
Raisul Islam
Raisul Islam 2018년 7월 11일
답변: Prateekshya 2024년 9월 3일
For sake of simplicity, let’s just say, I have a 10 by 31 by 31 matrix. I want the 10 th pageof the 31 by 31 matrix to be multiplied with a 5139 by 31 matrix giving me a 5139 by 31 matrix as result.i want hadamard or element by element product between the square and rectangular matrix.
Please suggest.
  댓글 수: 4
Raisul Islam
Raisul Islam 2018년 7월 11일
편집: Raisul Islam 2018년 7월 11일
It’s important to achieve the 5139 rows for all variables. No matter how I change the dimension. Now I know 31 by 31 contains about 961 data or so. But by having that multiplied with 10 gets 9610 data. I need 5139 by 31. Which is much higher. Maybe I can try reshaping with repeat. I don’t know.
James Tursa
James Tursa 2018년 7월 12일
For this small example:
x = reshape(1:18,2,3,3);
y = reshape(1:15,5,3);
what would be the desired result, ? (i.e., show us what the elements of the result would be for this specific case)
result = ...?

댓글을 달려면 로그인하십시오.

답변 (1개)

Prateekshya
Prateekshya 2024년 9월 3일
To perform an element-wise product between a 31x31 matrix and a 5139x31 matrix, you need to ensure that the dimensions align properly for the operation. Since a direct element-wise multiplication is not feasible due to mismatched dimensions, you need to adjust the matrices such that each element of the 31x31 matrix is applied to the corresponding columns of the 5139x31 matrix.
One way to achieve this is to replicate the 31x31 matrix along the first dimension to create a 5139x31x31 matrix which matches the dimensions of the 5139x31 matrix. Here is the code for the same:
% Example matrices
A = rand(31, 31); % 31x31 matrix (10th page of your 3D matrix)
B = rand(5139, 31); % 5139x31 matrix
% Replicate and reshape the 31x31 matrix to match the dimensions of the 5139x31 matrix
% This creates a 5139x31x31 matrix
A_rep = repmat(A, [5139, 1, 1]);
A_rep = reshape(A_rep, [5139,31,31]);
% Reshape B to a 5139x31x1 matrix for broadcasting
B_rep = reshape(B, [5139, 31, 1]);
% Perform element-wise multiplication
% The result is a 5139x31x31 matrix
C = A_rep .* B_rep;
% If you want a 5139x31 matrix as the final result, you might need to
% sum or average across the third dimension, depending on your specific needs.
% For example, summing across the third dimension:
result = sum(C, 3);
% Display the size of the result
disp(size(result)); % Should be [5139, 31]
This approach assumes that you want to apply each element of the 31x31 matrix across the corresponding columns of the 5139x31 matrix. You can adjust the final step according to your specific requirements for combining the results.
Thank you.

카테고리

Help CenterFile Exchange에서 Logical에 대해 자세히 알아보기

제품


릴리스

R2017b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by