An efficient algorithm is developed for determining the greatest common left divisor (GCLD) of two polynomial matrices. Knowing this divisor allows for several immediate applications. In coding theory, a noncatastrophic convolutional encoder can be derived from an arbitrary one. In systems theory, irreducible matrix fraction descriptions of transfer function matrices can be found. In linear algebra, the greatest common divisor can be seen as a basis for a free module generated by the columns of the matrices. The approach taken is based on recent ideas from systems theory. A minimal state space realization is obtained with minimal calculations, and from this the controllability matrix is analyzed to produce the GCLD. It will be shown that the derived algorithm is a natural extension of the Euclidean algorithm to the matrix case.