How to Multiply the following matrices case:
There is a matrix "T" with size 3*3*18 and another vector array "D" with size 3*1*18
I want to multiply the first matrix in T, I mean with size 3*3*1 with all other vectors in D but dont include the one that have the same slice i.e. multiply by the vector rom size 3*1*2 to 3*1*18 ... and store the output answers.
Do the same for the 2nd,3rd ..... matrices in T .... (Don't multiply the Matrix T with specific slice number with same slice number at D)
continue multiplying the 2nd T with all D but dont include the second D .... and so on for all T and D ..

 Réponse acceptée

Matt J
Matt J le 17 Mai 2022
Modifié(e) : Matt J le 17 Mai 2022
T=rand(3,3,18); D=rand(3,1,18);
M=pagemtimes(T,D(:,:));
M(:,logical(eye(18)))=[];
M=reshape(M,3,17,18);
whos M
Name Size Bytes Class Attributes M 3x17x18 7344 double

10 commentaires

M
M le 17 Mai 2022
Modifié(e) : M le 17 Mai 2022
@Matt J, This is not correct.
The output from multiplying the first T with all D expect the first D should be with size 3*1*17
and the same with other T and D .i.e repeat this 18 times
Matt J
Matt J le 17 Mai 2022
Modifié(e) : Matt J le 17 Mai 2022
In my output, M(:,:,1) is the result of "multiplying the first T with all D expect the first D". A 3x17 matrix does hold 17 3x1 vectors.
Torsten
Torsten le 17 Mai 2022
You get 18 matrices of size 3x17. These are the matrices - in one big matrix.
M
M le 17 Mai 2022
Modifié(e) : M le 17 Mai 2022
@Matt J, you make the multiplication by one shot, I want it separately .
, I mean multiply T with size 3*3*1 with the vector D with size 3*1*2 then 3*1*3 ... until 3*1*18
M
M le 17 Mai 2022
Modifié(e) : M le 17 Mai 2022
@Matt J, yes sorry for that D is an array which stored in it 18 vectors each with size 3*1
M
M le 17 Mai 2022
The output from the first multiplication should contain 17 vectors ... and same with other multiplication
Matt J
Matt J le 17 Mai 2022
Modifié(e) : Matt J le 17 Mai 2022
It does already. Each M(:,:,i) contains seventeen 3x1 vector. If you don't like it in this form, you can use permute() to interchange the dimensions as you prefer it.
M
M le 17 Mai 2022
@Matt J, Can you store it separately ? not in one big matrix?
Torsten
Torsten le 17 Mai 2022
Only as cell array of matrices M{i} because it is tedious to number the matrices M1,...,M18.
Does this fit your needs ?
Matt J
Matt J le 17 Mai 2022
Modifié(e) : Matt J le 17 Mai 2022
What is "separately"? Do you mean in separate elements of a cell array?
T=rand(3,3,18); D=rand(3,1,18);
M=pagemtimes(T,D(:,:));
M(:,logical(eye(18)))=[];
M=reshape(M,3,17,18);
M=reshape( num2cell(M,[1,2]) ,18,1)
M = 18×1 cell array
{3×17 double} {3×17 double} {3×17 double} {3×17 double} {3×17 double} {3×17 double} {3×17 double} {3×17 double} {3×17 double} {3×17 double} {3×17 double} {3×17 double} {3×17 double} {3×17 double} {3×17 double} {3×17 double}
whos M
Name Size Bytes Class Attributes M 18x1 9216 cell

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Sparse Matrices dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by