Aab*_*baz 6 matlab linear-algebra
对不起,如果这是显而易见的,但我搜索了一段时间,没有找到任何东西(或错过了).
我试图解决Ax = B形式的线性系统,其中A为4x4矩阵,B为4x1向量.
我知道对于单个系统我可以mldivide
用来获取x : x=A\B
.
但是我试图解决大量系统(可能> 10000)并且我不愿意使用for循环因为我被告知它在许多MATLAB问题中比矩阵公式慢得多.
那么我的问题是:有没有办法用A 4x4x N和B a 4x N矩阵求解Ax = B?
PS:我不知道它是否重要,但B矢量对于所有系统都是相同的.
你应该使用for循环.如果A
保持相同并且B
发生变化,预计算分解并重新使用它可能会有好处.但对于那些A
变化并B
保持不变的问题,除了解决N个线性系统之外别无选择.
你不应该过多担心循环的性能成本:MATLAB JIT编译器意味着循环在最近的MATLAB版本上通常可以同样快.
我认为你不能进一步优化这一点.正如@Tom所解释的那样,由于这A
是一个变化,A
事先考虑各种事件是没有好处的......
除了你提到的尺寸外,循环解决方案非常快:
A = rand(4,4,10000);
B = rand(4,1); %# same for all linear systems
tic
X = zeros(4,size(A,3));
for i=1:size(A,3)
X(:,i) = A(:,:,i)\B;
end
toc
Run Code Online (Sandbox Code Playgroud)
经过时间为0.168101秒.