How to Multiply the following matrices case?
You are now following this question
- You will see updates in your followed content feed.
- You may receive emails, depending on your communication preferences.
An Error Occurred
Unable to complete the action because of changes made to the page. Reload the page to see its updated state.
Show older comments
0 votes
Share a link to this question
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 ..
Accepted Answer
0 votes
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 Comments
@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
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
on 17 May 2022
You get 18 matrices of size 3x17. These are the matrices - in one big matrix.
@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
on 17 May 2022
The output from the first multiplication should contain 17 vectors ... and same with other multiplication
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.
Torsten
on 17 May 2022
Only as cell array of matrices M{i} because it is tedious to number the matrices M1,...,M18.
Does this fit your needs ?
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
More Answers (0)
Categories
Find more on Sparse Matrices in Help Center and File Exchange
See Also
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)