Skip to main content

Suppose initial data is $D$ and need to calculate the inverse of covariance of matrix $D$ i.e. $C = cov(D,D)$, where $cov$ represents covariance.

$B = inv(C)$

Now, new data $N$ appears. So matrix D and C both will updated as follows:

$D^{new} = \begin{bmatrix} D\\ N \end{bmatrix}$

$C^{new} = \begin{bmatrix} cov(D,D) & cov(D,D^{new})\\ cov(D^{new},D) & cov(D^{new},D^{new}) \end{bmatrix} = \begin{bmatrix} C & cov(D,D^{new})\\ cov(D,D^{new})^T & cov(D^{new},D^{new}) \end{bmatrix}$

Similarly, data will be updated continuously. Now, inverse of $C$ (i.e. $B$) is given and need to calculate inverse of $B^{new}$. However, I don't want to use direct or general inverse as it will be very expensive if matrix size will be large and also want to utilize the inverse calculated for old data i.e. $B$.

P.S: I have tried inverse of block or partitioned matrix but it doesn't yield similar result as general inverse in all cases ( For more detail: https://math.stackexchange.com/questions/2341605/why-i-am-getting-difference-between-block-inverse-and-general-inversefor more detail  ). If someone needs then I can provide the MATLAB code to verify it.

Suppose initial data is $D$ and need to calculate the inverse of covariance of matrix $D$ i.e. $C = cov(D,D)$, where $cov$ represents covariance.

$B = inv(C)$

Now, new data $N$ appears. So matrix D and C both will updated as follows:

$D^{new} = \begin{bmatrix} D\\ N \end{bmatrix}$

$C^{new} = \begin{bmatrix} cov(D,D) & cov(D,D^{new})\\ cov(D^{new},D) & cov(D^{new},D^{new}) \end{bmatrix} = \begin{bmatrix} C & cov(D,D^{new})\\ cov(D,D^{new})^T & cov(D^{new},D^{new}) \end{bmatrix}$

Similarly, data will be updated continuously. Now, inverse of $C$ (i.e. $B$) is given and need to calculate inverse of $B^{new}$. However, I don't want to use direct or general inverse as it will be very expensive if matrix size will be large and also want to utilize the inverse calculated for old data i.e. $B$.

P.S: I have tried inverse of block or partitioned matrix but it doesn't yield similar result as general inverse in all cases ( For more detail: https://math.stackexchange.com/questions/2341605/why-i-am-getting-difference-between-block-inverse-and-general-inverse  ). If someone needs then I can provide the MATLAB code to verify it.

Suppose initial data is $D$ and need to calculate the inverse of covariance of matrix $D$ i.e. $C = cov(D,D)$, where $cov$ represents covariance.

$B = inv(C)$

Now, new data $N$ appears. So matrix D and C both will updated as follows:

$D^{new} = \begin{bmatrix} D\\ N \end{bmatrix}$

$C^{new} = \begin{bmatrix} cov(D,D) & cov(D,D^{new})\\ cov(D^{new},D) & cov(D^{new},D^{new}) \end{bmatrix} = \begin{bmatrix} C & cov(D,D^{new})\\ cov(D,D^{new})^T & cov(D^{new},D^{new}) \end{bmatrix}$

Similarly, data will be updated continuously. Now, inverse of $C$ (i.e. $B$) is given and need to calculate inverse of $B^{new}$. However, I don't want to use direct or general inverse as it will be very expensive if matrix size will be large and also want to utilize the inverse calculated for old data i.e. $B$.

P.S: I have tried inverse of block or partitioned matrix but it doesn't yield similar result as general inverse in all cases (for more detail). If someone needs then I can provide the MATLAB code to verify it.

added 140 characters in body
Source Link

Suppose initial data is $D$ and need to calculate the inverse of covariance of matrix $D$ i.e. $C = cov(D,D)$, where $cov$ represents covariance.

$B = inv(C)$

Now, new data $N$ appears. So matrix D and C both will updated as follows:

$D^{new} = \begin{bmatrix} D\\ N \end{bmatrix}$

$C^{new} = \begin{bmatrix} cov(D,D) & cov(D,D^{new})\\ cov(D^{new},D) & cov(D^{new},D^{new}) \end{bmatrix} = \begin{bmatrix} C & cov(D,D^{new})\\ cov(D,D^{new})^T & cov(D^{new},D^{new}) \end{bmatrix}$

Similarly, data will be updated continuously. Now, inverse of $C$ (i.e. $B$) is given and need to calculate inverse of $B^{new}$. However, I don't want to use direct or general inverse as it will be very expensive if matrix size will be large and also want to utilize the inverse calculated for old data i.e. $B$.

P.S: I have tried inverse of block or partitioned matrix but it doesn't yield similar result as general inverse in all cases ( For more detail: https://math.stackexchange.com/questions/2341605/why-i-am-getting-difference-between-block-inverse-and-general-inverse ). If someone needs then I can provide the MATLAB code to verify it.

Suppose initial data is $D$ and need to calculate the inverse of covariance of matrix $D$ i.e. $C = cov(D,D)$, where $cov$ represents covariance.

$B = inv(C)$

Now, new data $N$ appears. So matrix D and C both will updated as follows:

$D^{new} = \begin{bmatrix} D\\ N \end{bmatrix}$

$C^{new} = \begin{bmatrix} cov(D,D) & cov(D,D^{new})\\ cov(D^{new},D) & cov(D^{new},D^{new}) \end{bmatrix} = \begin{bmatrix} C & cov(D,D^{new})\\ cov(D,D^{new})^T & cov(D^{new},D^{new}) \end{bmatrix}$

Similarly, data will be updated continuously. Now, inverse of $C$ (i.e. $B$) is given and need to calculate inverse of $B^{new}$. However, I don't want to use direct or general inverse as it will be very expensive if matrix size will be large and also want to utilize the inverse calculated for old data i.e. $B$.

P.S: I have tried inverse of block or partitioned matrix but it doesn't yield similar result as general inverse in all cases. If someone needs then I can provide the MATLAB code to verify it.

Suppose initial data is $D$ and need to calculate the inverse of covariance of matrix $D$ i.e. $C = cov(D,D)$, where $cov$ represents covariance.

$B = inv(C)$

Now, new data $N$ appears. So matrix D and C both will updated as follows:

$D^{new} = \begin{bmatrix} D\\ N \end{bmatrix}$

$C^{new} = \begin{bmatrix} cov(D,D) & cov(D,D^{new})\\ cov(D^{new},D) & cov(D^{new},D^{new}) \end{bmatrix} = \begin{bmatrix} C & cov(D,D^{new})\\ cov(D,D^{new})^T & cov(D^{new},D^{new}) \end{bmatrix}$

Similarly, data will be updated continuously. Now, inverse of $C$ (i.e. $B$) is given and need to calculate inverse of $B^{new}$. However, I don't want to use direct or general inverse as it will be very expensive if matrix size will be large and also want to utilize the inverse calculated for old data i.e. $B$.

P.S: I have tried inverse of block or partitioned matrix but it doesn't yield similar result as general inverse in all cases ( For more detail: https://math.stackexchange.com/questions/2341605/why-i-am-getting-difference-between-block-inverse-and-general-inverse ). If someone needs then I can provide the MATLAB code to verify it.

Source Link

How to calculate inverse of square matrix for streaming or online data as all data are not available at once?

Suppose initial data is $D$ and need to calculate the inverse of covariance of matrix $D$ i.e. $C = cov(D,D)$, where $cov$ represents covariance.

$B = inv(C)$

Now, new data $N$ appears. So matrix D and C both will updated as follows:

$D^{new} = \begin{bmatrix} D\\ N \end{bmatrix}$

$C^{new} = \begin{bmatrix} cov(D,D) & cov(D,D^{new})\\ cov(D^{new},D) & cov(D^{new},D^{new}) \end{bmatrix} = \begin{bmatrix} C & cov(D,D^{new})\\ cov(D,D^{new})^T & cov(D^{new},D^{new}) \end{bmatrix}$

Similarly, data will be updated continuously. Now, inverse of $C$ (i.e. $B$) is given and need to calculate inverse of $B^{new}$. However, I don't want to use direct or general inverse as it will be very expensive if matrix size will be large and also want to utilize the inverse calculated for old data i.e. $B$.

P.S: I have tried inverse of block or partitioned matrix but it doesn't yield similar result as general inverse in all cases. If someone needs then I can provide the MATLAB code to verify it.