bandpass.py 文件源码

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

项目:cebl 作者: idfah 项目源码 文件源码
def plotPhaseResponse(self, freqs=None, scale='radians',
                         showCorners=True,
                         label='Frequency Response',
                         ax=None, **kwargs):
        """Plot the frequency response of the filter.
        """
        if ax is None:
            fig = plt.figure()
            ax = fig.add_subplot(1,1,1)

        freqs, responses = self.frequencyResponse(freqs=freqs)
        freqs = freqs * self.sampRate * 0.5 / np.pi
        responseAngles = np.unwrap(np.angle(responses))

        scale = scale.lower()
        if scale == 'radians':
            ax.set_ylabel('Phase (Radians)')
        elif scale == 'cycles':
            ax.set_ylabel('Phase (Cycles)')
            responseAngles /= 2.0*np.pi
        elif scale == 'degrees':
            ax.set_ylabel('Phase (Degrees)')
            responseAngles = responseAngles*180.0 / np.pi
        else:
            raise Exception('Invalid scale: ' + str(scale) + '.')

        lines = ax.plot(freqs, responseAngles,
                        label=label, **kwargs)

        result = {'ax': ax, 'lines': lines}

        if showCorners:
            cornerLines = ax.vlines((self.lowFreq,self.highFreq),
                np.min(responseAngles), np.max(responseAngles),
                color='violet', linestyle='--', label='Corners')
            result['cornerLines'] = cornerLines

        ax.set_xlabel('Frequency (Hz)')

        return result
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号