东方耀AI技术分享

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 1494|回复: 0
打印 上一主题 下一主题

[学习笔记] python与matlab实现升余弦滚降滤波器与sinc对比

[复制链接]

1365

主题

1856

帖子

1万

积分

管理员

Rank: 10Rank: 10Rank: 10

积分
14437
QQ
跳转到指定楼层
楼主
发表于 2022-9-1 11:29:57 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式


python与matlab实现升余弦滚降滤波器与sinc对比

还有python导入matlab的数据文件*.mat


  1. %%%%%%%%%程序说明
  2. %%% b = rcosdesign(beta,span,sps,shape)
  3. %%% beta:滚降因子
  4. %%% span: 表示截断的符号范围,对滤波器取了几个Ts的长度
  5. %%% sps:每个符号的采样数
  6. %%% shape:可选择'normal'或者'sqrt'
  7. %%% b:1*(sps*span)的行向量,升余弦或余弦滤波器的系数

  8. %****************************  程序主体 ****************%
  9. clear all;close all;clc;

  10. h1 = rcosdesign(0.8,8,16,'sqrt');

  11. save('h1.mat', 'h1');

  12. fvtool(h1,'Analysis','impulse'); %将脉冲响应可视化

  13. % freqz(h1,1);

  14. %****************************  仿真结论 ***************%
  15. %%%%%成型滤波器rcosdesign的使用
  16. %%%新增freqz使用
复制代码



  1. # -*- coding: utf-8 -*-
  2. __author__ = u'东方耀 微信:dfy_88888'
  3. __date__ = '2022/9/1 上午8:57'
  4. __product__ = 'PyCharm'
  5. __filename__ = '25_BPSK调制解调物理层仿真'


  6. from common.radar_common import *

  7. # 选择Mark Directory as,然后选择第一项:Sources Root   红线消失

  8. # pip3 install scikit-commpy   https://github.com/veeresht/CommPy
  9. # https://blog.51cto.com/u_15127585/2670058

  10. from commpy.filters import rcosfilter, rrcosfilter

  11. mat_file = "/home/jiang/matlab_works/zhihu_tongxin/h1.mat"

  12. mat_data = scio.loadmat(mat_file)
  13. print("matlab数据的字典keys=", mat_data.keys())


  14. bit_rate = 1000  # 比特率
  15. symbol_rate = 1000 # 符号率
  16. sps = 16 #每个符号的采样点数
  17. fc = 2000 #载波频率
  18. fs = 16000 #采样频率 = sps * symbol_rate
  19. sample_num = 129
  20. Roll_off_factor = 0.8

  21. time_idx, h_rc = rcosfilter(sample_num, Roll_off_factor, Ts=1/symbol_rate, Fs=fs)
  22. h1 = mat_data["h1"][0]
  23. # -1 1 2*fs  sinc怎么取 没懂
  24. h_sinc = np.sinc(np.linspace(-4, 4, sample_num))


  25. print("时刻(间隔是采样间隔,非符合间隔):", len(time_idx), time_idx[1] - time_idx[0], 1/symbol_rate, 1/fs, time_idx[:10])
  26. print("滤波器幅值:", len(h_rc), h_rc[:5])


  27. fig = plt.figure(figsize=(18, 20))  # H=2000  W=1800像素
  28. plt.figure(1)
  29. plt.xlabel("采样点/时刻",
  30.            fontproperties=font, fontsize=15)
  31. plt.ylabel("幅值", fontproperties=font, fontsize=15)

  32. plt.plot(time_idx, h_sinc, marker='o', markersize=4,
  33.              markerfacecolor=my_color[0], color=my_color[0], label="sinc")
  34. plt.plot(time_idx, h_rc, marker='o', markersize=4,
  35.              markerfacecolor=my_color[1], color=my_color[1], label="python")
  36. plt.plot(time_idx, h1, marker='o', markersize=4,
  37.              markerfacecolor=my_color[2], color=my_color[2], label="matlab")
  38. plt.legend(loc="best")
  39. plt.suptitle('rcosfilter升余弦滚降滤波器(滚降因子beta=%.1f)对比' % Roll_off_factor,
  40.              fontproperties=font, fontsize=18)
  41. plt.show()




复制代码





屏幕截图_1.png (120.1 KB, 下载次数: 156)

屏幕截图_1.png

屏幕截图_4.png (91.42 KB, 下载次数: 156)

屏幕截图_4.png

屏幕截图_3.png (94.53 KB, 下载次数: 162)

屏幕截图_3.png

屏幕截图_2.png (101.81 KB, 下载次数: 155)

屏幕截图_2.png
让天下人人学会人工智能!人工智能的前景一片大好!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|人工智能工程师的摇篮 ( 湘ICP备2020019608号-1 )

GMT+8, 2024-5-5 19:30 , Processed in 0.193199 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表