How to perform inverse between a page of a 3D matrix and a column vector without loops?

2 次查看(过去 30 天)
The matrix H looks like 9 x 2 x 14 and matrix A1 is 9 x1. I need to perform inversion between every page of H with A using mldivide so that output looks like 2 x 1 x14 matrix. No loops.
clear all;
close all;
load H.mat
load A1.mat

采纳的回答

Steven Lord
Steven Lord 2023-1-11
Why do you insist to do this without looping? If you have been told "for loops in MATLAB are slow" that is not necessarily the truth anymore.
But in this particular case it is possible to use pagemldivide to accomplish this task.

更多回答(1 个)

Kevin Holly
Kevin Holly 2023-1-11
编辑:Kevin Holly 2023-1-11
load H.mat
load A1.mat
size(H)
ans = 1×3
9 2 14
size(A1)
ans = 1×2
9 1
answer = H.\A1;
size(answer)
ans = 1×3
9 2 14
  3 个评论
Kevin Holly
Kevin Holly 2023-1-11
Ah, I see. I misread the output. So, you need to vectorize this:
load H.mat
load A1.mat
size(H)
ans = 1×3
9 2 14
size(A1)
ans = 1×2
9 1
for ii = 1:size(H,3)
answer(:,:,ii) =H(:,:,ii)\A1;
end
size(answer)
ans = 1×3
2 1 14

请先登录,再进行评论。

类别

Help CenterFile Exchange 中查找有关 Loops and Conditional Statements 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by