Behaviour of backslash operator for non-square matrices least-squares fitting

10 visualizaciones (últimos 30 días)
I am currently trying to reproduce a set of results from a pre-existing project and can't get to the bottom of the following difference.
Phi = design matrix of input data size(29507x97)
Ref = reference values to fit to, six data sets, size(29507x6)
Phi = rand(29507,97);
Ref = rand(29507,6);
c1 = Phi\Ref;
for ii = 1:6
c2(:,ii) = Phi\Ref(:,ii);
end
all(all(c1==c2))
I would have expected c1 to give identical results to c2. I can't find detailed information on what the "\" algorithm is doing differently between these case.
Any help appreciated!

Respuesta aceptada

the cyclist
the cyclist el 24 de Feb. de 2020
They are equal, to within floating-point precision. Notice that
max(abs(c1(:)-c2(:)))
is around 1e-16.
  4 comentarios
Matt J
Matt J el 24 de Feb. de 2020
Editada: Matt J el 24 de Feb. de 2020
Also, internal parallelization of mldivide and other linear algebra operations is different depending on the size of the inputs. So, when you perform the mldivide column-by-column, the inputs are divided up into parallel chunks in a different way, leading to floating point differences.
Matt O'Donnell
Matt O'Donnell el 24 de Feb. de 2020
@the cyclist Yes. I agree with that as the likely root cause.
I thought it would be doing the same least squares calculation on a column by column basis as each column should be treated independently from each other in terms of doing the expected calculation.i.e. column 1 should never know anything about the other 5 columns's calculations mathematically speaking. But as @Matt J has suggested it is doing something across the columns, or even splitting each column differently, which leads to the difference/calculation order effect as suggested.
Many thanks to both of you for helping to get my head around this.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Logical en Help Center y File Exchange.

Productos


Versión

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by