普通网友 2015-05-06 06:12 采纳率: 66.7%
浏览 1834

信号处理问题 (用python或者matlab)

比如产生这样的正弦信号,做FFT变换。取得频谱上三个频率分量对应的下标,根据下标求出相应的频率值。

 t = np.arange(0,N-1)*T_interval  
sig = np.sin(200*np.pi*t)+np.sin(500*2*np.pi*t)+np.sin(700*2*np.pi*t)

对于幅度就是用巴特沃斯滤波器,计算过滤出的信号时域上的峰值,求幅度。

    def calculate_amp(freq,sig,Fs,N):
        nyq=0.5*Fs
        j=0
        signature=[None]*len(freq)
        peak=[None]*len(freq)
        for i in freq:
            #print i
            low=(i-10)/nyq
            high=(i+10)/nyq
            b,a=butter(3,[low,high],btype='band')
            #print b,a
            signature[j]=lfilter(b,a,sig)
            maximum=max(signature[j])
            minimum=min(signature[j])
            peak[j]=(abs(maximum)+abs(minimum))/2

            j=j+1
        return  peak    

如果这个正弦信号,频率都为1,2,这些比较小的数值的话,结果都是正确的。但是如果
sig = 100*np.sin(200*np.pi*t)+20*np.sin(500*2*np.pi*t)+np.sin(700*2*np.pi*t)
幅度结果就会相差很大很大。
为什么呢

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-09 17:37
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥30 STM32 INMP441无法读取数据
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境