#!/usr/bin/env python
# print apparent positions of aliases in spectrum. Assume F0 is sub-nyquist
import sys
[docs]def run_main():
    try:
        from engineering_notation import EngNumber as en
    except:
        print("print in sci notation, for engineering: pip install engineering_notation")
    FS = 1e6 if len(sys.argv) < 2 else float(sys.argv[1])
    FN = FS/2
    F0 = 100e3 if len(sys.argv) < 3 else float(sys.argv[2])
    print("aliases FS {} NY {} F0 {}".format(FS, FN, F0))
    fcursor = F0
    for h in range(0, 10):
        fh = (h+1)*F0
        wraps = int(fh // FN)
        residue = fh - wraps*FN
        if wraps&1:
            hbin = FN-residue
        else:
            hbin = residue
        try:
            print("F{} {:>6s} appears at {:>6s} wraps {}".format(h, "{}".format(en(fh)), "{}".format(en(hbin)), wraps))
        except:
            print("F{} {:.2e} appears at {:.2e} wraps {}".format(h, fh, hbin, wraps)) 
if __name__ == '__main__':
    run_main()