# Can I calculate the inverse of a matrix using arrayfun?

1 visualizzazione (ultimi 30 giorni)
Benson Gou il 25 Giu 2021
Commentato: Benson Gou il 29 Giu 2021
Dear All,
I have a sparse matrix A. I want to calculate its inverse. I used the following way to calculate invA.
invA = A \ speye(size(A));
My matrix size is 3000 by 3000. I found it took me 1.3 seconds to get invA. It is longer than I expected.
I am wondering if I could use arrayfun to calculate invA. The idea is to calculate each column in invA by invA(:,i) = A \ ei, where ei is a zero column vector except its ith element is 1.0.
I tried the following code to implement the above idea:
invA = arrayfun(@(x) A\x ,speye(size(A,1)));
But I got error message.
Thanks a lot.
Benson
##### 1 CommentoMostra -1 commenti meno recentiNascondi -1 commenti meno recenti
Matt J il 25 Giu 2021
I don't see how arrayfun could help, unless this is on the GPU.

Accedi per commentare.

### Risposta accettata

Walter Roberson il 25 Giu 2021
Modificato: Walter Roberson il 25 Giu 2021
invA = cell2mat(arrayfun(@(C) A\sparse(C,1,1,size(A,1),1), 1:size(A,2), 'uniform', 0))
I would be surprised if it is faster.
##### 8 CommentiMostra 6 commenti meno recentiNascondi 6 commenti meno recenti
Benson Gou il 29 Giu 2021
Hi, Walter,
I do not have the Image Processing Toolbox. So I cannot run decompose(A).
But the goal that I want to obtain the inverse of A is becaus I need to find out the nonzero elements in invA. So I do not know if decompose(A) is able to be useful for my case.
Thanks a lot.
Benson
Walter Roberson il 29 Giu 2021
decomposition()

Accedi per commentare.

### Più risposte (1)

Sulaymon Eshkabilov il 25 Giu 2021
Modificato: Sulaymon Eshkabilov il 25 Giu 2021
In fact, you can employ arrayfun for the matric inverse calc, e.g.:
tic;
iA =arrayfun(@inv,A);
toc;
Note that arrayfun is not the best option and does not take the sparse matrix.
Just direct inv() is the fastest so far.
In fact, for solving linear systems, to compute the inverse is not advised.
##### 4 CommentiMostra 2 commenti meno recentiNascondi 2 commenti meno recenti
Walter Roberson il 25 Giu 2021
By the way, you cannot apply arrayfun() directly to a sparse matrix.
Benson Gou il 29 Giu 2021
Hi, Walter,
Yes, the decomposition is faster than \ operator. Thanks a lot.
Benson

Accedi per commentare.

### Categorie

Scopri di più su Sparse Matrices in Help Center e File Exchange

### Community Treasure Hunt

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

Start Hunting!

Translated by