Cells and Matrix division
9 ビュー (過去 30 日間)
古いコメントを表示
Hi,
I have a problem where I want to find the solution to A*x=B
Where A is a matrix of 4x4 where each element in the matrix is of the size 1x10. B is a matrix 4x1 where each element is of the size 1x10. The x matrix should be a matrix 4x1 where each element is of the size 4x1 where each element is the size of 1x10. How can I succed with this?
If needed I can write a code with exemples of the matrices.
2 件のコメント
回答 (2 件)
DGM
2021 年 11 月 22 日
編集済み: DGM
2021 年 11 月 22 日
I'm still assuming you're using cell arrays, since that's the only way that the description makes sense.
I'm sure someone can whip up a more elegant solution, maybe even directly dealing with the cell array without converting it. ... but this is what I did as a simplified example.
sa = 4; % size of system
nsys = 10; % number of systems
% generate a test array (all coefficient matrixes)
A = repmat(randi([-100 100],sa,sa),[1 1 nsys]);
% rearrange to mimic the array you have
A = cellfun(@(x) permute(x,[1 3 2]),num2cell(A,3),'uniform',false)
% turn it back into a regular array
A = cell2mat(cellfun(@(x) permute(x,[1 3 2]),A,'uniform',false))
% all b vectors as you describe
b = repmat({repmat(10,[1 nsys])},[sa 1]);
% turn it into a regular array
b = cell2mat(b)
x = zeros(sa,nsys);
for k = 1:nsys
x(:,k) = A(:,:,k)\b(:,k);
end
x % the answers
% turn it back into an unweildy cell array??
x = num2cell(x,2)
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Matrix Indexing についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!