How Can I replace the following for loop by vectorization?
古いコメントを表示
Hi Guys,
I have a set of large sparse matrices:
W ,size=(1,10,m)
V ,size=(10,1,m)
Y ,size=(10,10,n)
and I need the output matrix P as follow:
P(i,j)=W(:,:,i)*Y(:,:,j)*V(:,:,i)
e.g if m=2 & n=3
P=[
W(:,:,1)*Y(:,:,1)*V(:,:,1) W(:,:,1)*Y(:,:,2)*V(:,:,1);
W(:,:,1)*Y(:,:,2)*V(:,:,1) W(:,:,2)*Y(:,:,2)*V(:,:,2);
W(:,:,1)*Y(:,:,3)*V(:,:,1) W(:,:,2)*Y(:,:,3)*V(:,:,2)
]
I want to see if you have any suggestion how to write this by a single line code. I have written the code with "two for loop" but because of the large size of matrices, it is almost slow. Any faster idea is really appreciated.
Thank you in advance,
Alireza
2 件のコメント
Jan
2016 年 11 月 22 日
Please post your code and typical input data. It matters if m=1e3 and n=1e7 or the other way around. Perhaps your code is slow due to a forgotten pre-allocation.
What does "sparse" mean? Do the arrays contain a lot of zeros or do you sue the type sparse, which does not work for 3D-arrays?
Alireza Barzegar
2016 年 11 月 23 日
編集済み: Walter Roberson
2016 年 11 月 23 日
採用された回答
その他の回答 (0 件)
カテゴリ
ヘルプ センター および File Exchange で Loops and Conditional Statements についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!