Compass Calibrate Offsets are a bit differrent from Matlab result

Here are result which worked out from APM CompassCalibrare.cpp

PARM, 8048398, COMPASS_OFS_X, 28.60939
PARM, 8048423, COMPASS_OFS_Y, -82.79034
PARM, 8048626, COMPASS_OFS_Z, 130.0766

PARM, 8050456, COMPASS_DIA_X, 0.5501795
PARM, 8050496, COMPASS_DIA_Y, 0.5499594
PARM, 8050535, COMPASS_DIA_Z, 0.556116

PARM, 8050675, COMPASS_ODI_X, -0.0007416647
PARM, 8050715, COMPASS_ODI_Y, -0.002949237
PARM, 8050755, COMPASS_ODI_Z, -0.000889277

And here are result from matlab . and it is data from flight log which convert to matlab data .

offset = 5.3006
-3.6485
-3.1845

comp=
0.9920 0.0051 -0.0233
0.0051 0.9538 -0.0153
-0.0233 -0.0153 0.9116


red data is origin data . and blue data is correct data .
Why offset diff so much ? Is it acceptable ?