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!