MATLAB Answers

0

linsolve time-consuming

Asked by Fikret Dogru on 22 Jun 2019
Latest activity Commented on by Torsten
on 27 Jun 2019
Hello all,
Here is my code and it is running more than 2 days. Z1, Z2, A, B, D and E are known 1 X 1.000.000 vector and C and F are constant values 1X1. I am trying to estimate X and Y but the program is still working. Is there any chance to find when will it finish with these matrices? Any help will be great. Thanx all.
syms X Y
Z1=X.*A-Y.*B*C;
Z2=X.*D-Y.*E*F;
[A,B]=equationsToMatrix([Z1,Z2], [X,Y]);
X = linsolve(A,B);

  0 Comments

Sign in to comment.

Tags

1 Answer

Stephan
Answer by Stephan
on 23 Jun 2019
 Accepted Answer

Get rid of symbolic calculation - this makes code very slow and solve numeric:
clear X Y
% This works if your values are of size 1 x 1.000.000
X = linsolve([A', (-B.*C)'; D.' (-E.*F)'],[Z1'; Z2'])

  5 Comments

Thanks Stephan,
it helped but which method is this? It is the first time I have seen solving problem like that.
Fikret
Stephan
on 27 Jun 2019
You should thank Torsten - but here is an explaination of what he did:
syms X Y A B C D E F Z1 Z2
eq(1) = Z1==X.*A-Y.*B*C;
eq(2) = Z2==X.*D-Y.*E*F;
sol = solve(eq,[X,Y]);
sol.X
sol.Y
Torsten
on 27 Jun 2019
@ Fikret Dogru:
The method is called "Cramer's rule".

Sign in to comment.