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개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Operating on Diagonal Matrices에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!