drf_plot.py 文件源码

python
阅读 35 收藏 0 点赞 0 评论 0

项目:digital_rf 作者: MITHaystack 项目源码 文件源码
def spectrum_process(data, sfreq, cfreq, toffset, modulus, integration, bins, log_scale, zscale, detrend, title, clr):
    """ Break spectrum by modulus and display each block. Integration here acts
    as a pure average on the spectral data.
    """
    if detrend:
        dfn = matplotlib.mlab.detrend_mean
    else:
        dfn = matplotlib.mlab.detrend_none

    win = numpy.blackman(bins)

    if modulus:
        block = 0
        block_size = integration * modulus
        block_toffset = toffset
        while block < len(data) / block_size:

            vblock = data[block * block_size:block * block_size + modulus]
            pblock, freq = matplotlib.mlab.psd(
                vblock, NFFT=bins, Fs=sfreq, detrend=dfn, window=win, scale_by_freq=False)

            # complete integration
            for idx in range(1, integration):

                vblock = data[block * block_size + idx *
                              modulus:block * block_size + idx * modulus + modulus]
                pblock_n, freq = matplotlib.mlab.psd(
                    vblock, NFFT=bins, Fs=sfreq, detrend=dfn, window=matplotlib.mlab.window_hanning, scale_by_freq=False)
                pblock += pblock_n

            pblock /= integration

            yield spectrum_plot(pblock, freq, cfreq, block_toffset,
                                log_scale, zscale, title, clr)

            block += 1
            block_toffset += block_size / sfreq

    else:
        pdata, freq = matplotlib.mlab.psd(
            data, NFFT=bins, Fs=sfreq, detrend=dfn, window=win, scale_by_freq=False)
        yield spectrum_plot(pdata, freq, cfreq, toffset,
                            log_scale, zscale, title, clr)
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号