This paper proposes a novel minutiae-based fingerprint matching algorithm. A fingerprint is represented by minutiae set and sampling points on all ridges. Therefore, the foreground of a fingerprint image can be accurately estimated by the sampling points. The similarity between two minutiae is measured by two parts: neighboring minutiae which are different in minutiae pattern and neighboring sampling points which are different in orientation and frequency. After alignment and minutiae pairing, Nine features are extracted to represent the matching status and penalized logistic regression (PLR) is adopted to calculate the matching score. The proposed algorithm is evaluated on fingerprint databases of FVC2002 and compared with the participants in FVC 2002. Experimental results show that the proposed algorithm achieves good performance and ranks 5th according to average equal error rate.