I came across this problem and I'm not sure if the proof I have found is OK. Any suggestions or confirmation of correctness would be appreciated.
The Problem:
Show that the number of non-zero singular values of a matrix $A$ coincides with its rank
My Approach:
We have an arbitrary matrix $A_{m\times n}$. For every eigenvector $v_i$ of the modulus $|A|$ of $A$ (where $|A|^2=A^*A$, $|A|$ being $n\times n$), and its corresponding eigenvalue $\lambda_i$ ($\forall i=1,\,2,\,...,\,n$), we have $(|A|-\lambda_i \mathbb{I}_n)v_i=0$. For every singular value $\sigma_i$ of $A$ equal to zero, the corresponding eigenvalue $\lambda_i$ of $|A|$ is also zero. Therefore, from the previous expression, for every $\sigma_i=0$, we have:
$$|A|v_i=0$$
So the problem comes down to solving this homogeneous system. Because $|A|$ is self-adjoint, there always exists a basis of eigenvectors of $|A|$, which means that the geometric multiplicity of any eigenvalue of $|A|$ is always equal to its algebraic multiplicity. Therefore, $ \dim Ker|A| = n-r$, where $r$ is the number of non-zero eigenvalues of $|A|$, and therefore also the number of non-zero singular values of $A$.
Using the well known equality, $\dim Ker|A|=n-\text{rank}|A|$, and the previous result, we have:
$$n-r=n-\text{rank}|A|\rightarrow r=\text{rank}|A|$$
From the definition of $|A|$, for any $x \in \mathbb{C}^n$:
$$\mid \mid |A|x \mid \mid^2 =(|A|x,\,|A|x)=(|A|^*|A|x,\,x)=(|A|^2x,\,x)=(A^*Ax,\,x)=(Ax,\,Ax)=\mid \mid Ax \mid \mid^2 \rightarrow$$ $$\rightarrow\mid \mid |A|x \mid \mid=\mid \mid Ax \mid \mid$$
This means $|A|x=0\Leftrightarrow Ax =0$, $\forall x \in \mathbb{C}^n$, so $KerA=Ker|A|$. Then:
$$\text{rank}A=n-\dim KerA=n-\dim Ker|A|=n-(n-\text{rank}|A|)=\text{rank}|A|$$
Therefore, as $\text{rank}|A|=\text{rank}A$, we have:
$$r=\text{rank}|A|=\text{rank}A$$
Therefore, the number of non-zero singular values of an arbitrary matrix $A_{m\times n}$ is equal to the rank of such matrix.