wildlifewjl 2022-12-27 17:22 采纳率: 100%
浏览 67
已结题

又是一个数字信号处理原理的问题

图片上面是步骤下面是伪代码,用C++或者python都可以,虽然图片给了步骤但还是不会写

img

  • 写回答

1条回答 默认 最新

  • heart_6662 2022-12-27 17:44
    关注

    我会写,但是被骗了几次了,被白嫖钓鱼怕了,若干对你有帮助,希望可以给我个采纳!


    这个东西应该是 一个求低通滤波器系数的伪代码,其中 N 是滤波器的阶数,AM 是带通滤波器的最大通带幅度(也称为最大增益),H[k] 是滤波器的频域系数,h[n] 是滤波器的时域系数。


    我分析了一下:在这个伪代码中,首先使用 DFT 求出频域系数 H[k],然后使用 IDFT 求出时域系数 h[n]。求出的 h[n] 是一个对称的序列,所以只需要考虑 h[n] 在 n=1 到 n=N/2 的部分,其余部分可以用 h[-n] 的值求出
    接下来是我的代码展示

    import numpy as np
    
    # 定义滤波器的阶数 N 和最大通带幅度 AM
    N = 100
    AM = 10
    
    # 求出频域系数 H[k]
    H = np.zeros(N)  # H[k] 的初始值都为 0
    for k in range(N):
        H[k] = H(ej(k))  # 根据伪代码中的公式计算 H[k]
    
    # 求出时域系数 h[n]
    h = np.fft.ifft(H)  # 使用 NumPy 库的 ifft 函数求 IDFT
    
    # 只需要考虑 h[n] 在 n=1 到 n=N/2 的部分
    h = h[:N//2+1]
    
    # 对称求出 h[-n] 的值
    for n in range(1, N//2):
        h[-n] = h[n]
    
    # 绘制滤波器系数 h[n] 的图像
    import matplotlib.pyplot as plt
    
    plt.plot(h)
    plt.show()
    
    
    

    其中,H(ej(k)) 是你自己实现的函数,根据伪代码中的公式计算 H[k]。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 1月4日
  • 已采纳回答 12月27日
  • 创建了问题 12月27日

悬赏问题

  • ¥17 pro*C预编译“闪回查询”报错SCN不能识别
  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 HLs设计手写数字识别程序编译通不过
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 TYPCE母转母,插入认方向