On 12/06/2016 17:57, Steven Franke wrote:
> I’m kind of stuck at the moment. Hoping that you will see something that I’m 
> missing. In r6773, I am getting consistent decoding results using either 
> msk144d or wsjt-x on linux, but on OS X I am getting different results 
> between msk144d and wsjt-x, and also different results between either of 
> these programs on OS X and linux.

Hi Steve,

the problem is almost certainly related to the size and initialization 
of detmet in detectmsk144.f90. You have it sized at 700 but only 
initialize it up to element 693 but also access it 3 elements either 
side of the maximum element value. I tried the following patch but 
cannot get the number of decodes you have:

diff --git a/lib/detectmsk144.f90 b/lib/detectmsk144.f90

index b3fbc5a..8d29947 100644

--- a/lib/detectmsk144.f90

+++ b/lib/detectmsk144.f90

@@ -6,6 +6,7 @@ subroutine detectmsk144(cbig,n,pchk_file,lines,nmessages,nutc)

    use timer_module, only: timer

    parameter (NSPM=864, NPTS=3*NSPM)

+  integer, parameter :: nstep=693

    character*22 msgreceived,allmessages(20)

    character*80 lines(100)

    character*512 pchk_file,gen_file

@@ -26,12 +27,12 @@ subroutine 
detectmsk144(cbig,n,pchk_file,lines,nmessages,nutc)

    integer*4 i4Dec6BitWords(12)

    integer*1 decoded(80)

    integer*1 i1hashdec

-  integer indices(700)

+  integer indices(nstep)

    integer ipeaks(10)

    logical ismask(6000)

    real cbi(42),cbq(42)

-  real detmet(700)

-  real detfer(700)

+  real detmet(-2:nstep+3)

+  real detfer(nstep)

    real tonespec(6000)

    real rcw(12)

    real dd(NPTS)

@@ -82,7 +83,8 @@ subroutine detectmsk144(cbig,n,pchk_file,lines,nmessages,nutc)

       first=.false.

    endif

-  nstep=693  ! fill the detmet, detsnr, detferr arrays

+  ! fill the detmet, detsnr, detferr arrays

+  detmet=0.

    do istp=1,nstep

      ns=1+256*(istp-1)

      ne=ns+NPTS-1

@@ -127,7 +129,7 @@ subroutine 
detectmsk144(cbig,n,pchk_file,lines,nmessages,nutc)

      detfer(istp)=ferr

    enddo  ! end of detection-metric, snr, and frequency error estimation loop

-  call indexx(detmet,nstep,indices) !find median of detection metric vector

+  call indexx(detmet(1:nstep),nstep,indices) !find median of detection metric 
vector

    xmed=detmet(indices(nstep/2))

    detmet=detmet/xmed ! noise floor of detection metric is 1.0

@@ -358,8 +360,8 @@ subroutine 
detectmsk144(cbig,n,pchk_file,lines,nmessages,nutc)

        if( ndupe .eq. 0 ) then

          nmessages=nmessages+1

          allmessages(nmessages)=msgreceived

-        write(lines(nmessages),1020) 
nutc,nsnr,t0,nint(fest),msgreceived,char(0)

-1020    format(i6.6,i4,f5.1,i5,' & ',a22,a1)

+        write(lines(nmessages),1020) nutc,nsnr,t0,nint(fest),msgreceived

+1020    format(i6.6,i4,f5.1,i5,' & ',a22)

        endif

      endif

73
Bill
G4WJS.


------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity 
planning reports. https://ad.doubleclick.net/ddm/clk/305295220;132659582;e
_______________________________________________
wsjt-devel mailing list
wsjt-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wsjt-devel

Reply via email to