How to avoid writing a for loop in A\b when A and b are different dimensions
조회 수: 2 (최근 30일)
이전 댓글 표시
I am currently solving
where A is a 3d complex array of dimension
and b is a 2d real array of dimension
. In order to do this, I create a single for loop which calls linsolve()
times.




Could I avoid writing this for loop so that I wouldn't have to spend the extra computation calling linsolve()
times? It appears that the pagemldivide() function might be one way of doing this.

clear all; close all;
% Original Method
Nx = 32;
A = complex(rand(Nx+1,Nx+1,Nx),rand(Nx+1,Nx+1,Nx)); % A is a 3D complex array
b = rand(Nx+1,Nx); % b is a 2D real array
soln = zeros(Nx,Nx+1); % the resulting solution will be a 2d complex array
for j=1:Nx
prob = linsolve(A(:,:,j),b(:,j)); % A\b
soln(j,:) = prob.'; % Size (Nx,Nx+1)
end
% New Method
soln_tilde = pagemldivide(A(:,:).',b(:)); % Size (Nx+1,1)
Is there a way of using pagemldivide() (or a seperate Matlab function) to avoid writing a for loop and get the same resulting solution of size
?

댓글 수: 0
채택된 답변
추가 답변 (0개)
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!