Can I use mldivide “\” on a nD matrix without using for loops in Matlab?

1 回表示 (過去 30 日間)
Abdel-Rahman Ashraf
Abdel-Rahman Ashraf 2020 年 5 月 20 日
編集済み: Abdel-Rahman Ashraf 2020 年 5 月 20 日
Could I use mldivide (\) on an n-dimensional matrix without using for loops? For example, if I have X=rand (5,5,2,3,6) and Y=[0;0;0;0;1];, can I slice every 5*5 array along the other dimensions to solve it against Y? But for any N-D matrix.

回答 (1 件)

Abdel-Rahman Ashraf
Abdel-Rahman Ashraf 2020 年 5 月 20 日
編集済み: Abdel-Rahman Ashraf 2020 年 5 月 20 日
I solved it with the help of Bruno Luong and his multisolver found here. The code below can solve any number of dimensions, considering the first two dimensions are of the same size.
M=rand(5,5,2,3,6);
RHS=[0;0;0;0;1];
sx = size(M);
sy = size(RHS);
dx = ndims(M);
MSOL=MultiSolver(reshape(M,sx(1),sx(2),[]),RHS);
MSOL = reshape(MSOL, [sx(2) sy(2) sx(3:dx)]);

カテゴリ

Help Center および File ExchangeMathematics についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by