东方耀AI技术分享

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 1584|回复: 0

[C/C++] c++的eigen矩阵保存的复数如何在python中用numpy导入加载

[复制链接]

1366

主题

1857

帖子

1万

积分

管理员

Rank: 10Rank: 10Rank: 10

积分
14466
QQ
发表于 2023-11-10 16:39:45 | 显示全部楼层 |阅读模式




c++的eigen矩阵保存的复数如何在python中用numpy导入加载

用这个np.genfromtxt  而不是 np.loadtxt


    for i in range(antenna_tx_num * antenna_rx_num):
        # 每列的转换器
        converters = convert


  1. // 保存输入的数据 方便分析
  2.         Eigen::VectorXcf tx, rx;
  3.         tx.resize(ninput_items[0]);
  4.         rx.resize(ninput_items[1]);
  5.         memcpy(&tx(0), in_tx, sizeof(gr_complex) * ninput_items[0]);
  6.         memcpy(&rx(0), in_rx, sizeof(gr_complex) * ninput_items[1]);

  7.         /*写文件**/
  8.         ofstream f_out_tx("tx.txt", ios::out);
  9.         f_out_tx << tx << endl;
  10.         f_out_tx.flush();

  11.         /*写文件**/
  12.         ofstream f_out_rx("rx.txt", ios::out);
  13.         f_out_rx << rx << endl;
  14.         f_out_rx.flush();
复制代码


  1. # -*- coding: utf-8 -*-
  2. __author__ = u'东方耀 微信:dfy_88888'
  3. __date__ = '2023/11/10 下午3:47'
  4. __product__ = 'PyCharm'
  5. __filename__ = '19_sfcw的发射信号与回波信号分析'




  6. from scipy.fftpack import fft, ifft, fftshift
  7. from scipy.signal import lfilter
  8. import scipy.io as scio
  9. import math
  10. import cmath
  11. from sklearn.cluster import KMeans
  12. import time
  13. from matplotlib import cm
  14. import numpy as np
  15. import random
  16. import os
  17. import struct
  18. import shutil
  19. from scipy import signal
  20. from collections import Counter, OrderedDict
  21. import io
  22. from PIL import Image
  23. import cv2
  24. import json
  25. from tqdm import tqdm
  26. import csv
  27. import matplotlib.pyplot as plt
  28. from mpl_toolkits.mplot3d import Axes3D      # ValueError: Unknown projection '3d' 必须加这一行才行
  29. from matplotlib import transforms
  30. import matplotlib.ticker as mticker

  31. from matplotlib.font_manager import FontProperties


  32. font_fname = "/usr/share/fonts/wps-office/simfang.ttf"
  33. # font_fname = "C:\Windows\Fonts\simfang.ttf"
  34. font = FontProperties(fname=font_fname)
  35. # plt.rcParams['font.sans-serif']=['simfang']#设置作图中文显示

  36. random.seed(888)


  37. def randomcolor():
  38.     colorArr = ['1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F']
  39.     color = ""
  40.     for i in range(6):
  41.         color += colorArr[random.randint(0, 14)]
  42.     return "#" + color


  43. my_color = []
  44. for _ in range(1000):
  45.     # 每帧 不同的颜色
  46.     my_color.append(randomcolor())




  47. tx_file = "/home/jiang/jjj_grc_works/jiang_KGD_projects/18/tx.txt"

  48. rx_file = "/home/jiang/jjj_grc_works/jiang_KGD_projects/18/rx.txt"

  49. # x是字符串  x = (real,imag)
  50. convert = (lambda x: float(x[1:-1].split(b',')[0]) +
  51.                      float(x[1:-1].split(b',')[1]) * 1j)
  52. converters = {}
  53. for i in range(1):
  54.     # 每列的转换器
  55.     converters[i] = convert
  56. # tx = np.loadtxt(tx_file, dtype=np.complex64)
  57. tx = np.genfromtxt(tx_file, dtype=np.complex64, converters=converters, autostrip=True)

  58. # rx = np.loadtxt(rx_file, dtype=np.complex64)
  59. rx = np.genfromtxt(rx_file, dtype=np.complex64, converters=converters, autostrip=True)

  60. print("tx_len = ", tx.shape)
  61. print("rx_len = ", rx.shape)


  62. look_one_echo_wave_dat = tx

  63. fig = plt.figure(figsize=(18, 20))  # H=2000  W=1800像素
  64. plt.figure(1)
  65. plt.subplots_adjust(wspace=0, hspace=0.6)

  66. plt.subplot(4, 1, 1)

  67. plt.xlabel("点数", fontproperties=font, fontsize=15)
  68. plt.ylabel("value", fontproperties=font, fontsize=15)
  69. plt.title("Rx_IQ路_时域波形_len=%d" % len(look_one_echo_wave_dat), fontproperties=font, fontsize=16)
  70. plt.plot(look_one_echo_wave_dat.real, marker="o", markersize=4, markerfacecolor=my_color[0], color=my_color[0], label="real")
  71. plt.plot(look_one_echo_wave_dat.imag, marker="o", markersize=4, markerfacecolor=my_color[1], color=my_color[1], label="imag")
  72. plt.legend(loc="best")

  73. plt.subplot(4, 1, 2)

  74. plt.xlabel("点数_频率(M)", fontproperties=font, fontsize=15)
  75. plt.ylabel("幅值", fontproperties=font, fontsize=15)

  76. plt.title("Rx_幅度谱", fontproperties=font, fontsize=16)
  77. plt.plot(np.abs(fftshift(fft(look_one_echo_wave_dat))), marker="o", markersize=4, markerfacecolor=my_color[3], color=my_color[3])
  78. # plt.legend(loc="best")


  79. plt.subplot(4, 1, 3)

  80. plt.xlabel("点数", fontproperties=font, fontsize=15)
  81. plt.ylabel("相位", fontproperties=font, fontsize=15)
  82. plt.title("Rx_时域的相位角", fontproperties=font, fontsize=16)
  83. # plt.plot(np.angle(fftshift(fft(echo_wave_data_mat[:, look_echo_wave_index]))), marker="o", markersize=4, markerfacecolor=my_color[4], color=my_color[4])
  84. plt.plot(np.angle(look_one_echo_wave_dat), marker="o", markersize=4, markerfacecolor=my_color[4], color=my_color[4])
  85. # plt.legend(loc="best")


  86. plt.subplot(4, 1, 4)

  87. plt.xlabel("点数", fontproperties=font, fontsize=15)
  88. plt.ylabel("value", fontproperties=font, fontsize=15)
  89. plt.title("Rx_IQ路_时域的幅值", fontproperties=font, fontsize=16)
  90. plt.plot(np.abs(look_one_echo_wave_dat), marker="o", markersize=4, markerfacecolor=my_color[4], color=my_color[4])


  91. plt.show()

复制代码





tx.txt

96 KB, 下载次数: 158

rx.txt

96 KB, 下载次数: 161

让天下人人学会人工智能!人工智能的前景一片大好!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-7-22 15:33 , Processed in 0.208992 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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