|
c++的eigen矩阵保存的复数如何在python中用numpy导入加载
用这个np.genfromtxt 而不是 np.loadtxt
for i in range(antenna_tx_num * antenna_rx_num):
# 每列的转换器
converters = convert
- // 保存输入的数据 方便分析
- Eigen::VectorXcf tx, rx;
- tx.resize(ninput_items[0]);
- rx.resize(ninput_items[1]);
- memcpy(&tx(0), in_tx, sizeof(gr_complex) * ninput_items[0]);
- memcpy(&rx(0), in_rx, sizeof(gr_complex) * ninput_items[1]);
- /*写文件**/
- ofstream f_out_tx("tx.txt", ios::out);
- f_out_tx << tx << endl;
- f_out_tx.flush();
- /*写文件**/
- ofstream f_out_rx("rx.txt", ios::out);
- f_out_rx << rx << endl;
- f_out_rx.flush();
复制代码
- # -*- coding: utf-8 -*-
- __author__ = u'东方耀 微信:dfy_88888'
- __date__ = '2023/11/10 下午3:47'
- __product__ = 'PyCharm'
- __filename__ = '19_sfcw的发射信号与回波信号分析'
- from scipy.fftpack import fft, ifft, fftshift
- from scipy.signal import lfilter
- import scipy.io as scio
- import math
- import cmath
- from sklearn.cluster import KMeans
- import time
- from matplotlib import cm
- import numpy as np
- import random
- import os
- import struct
- import shutil
- from scipy import signal
- from collections import Counter, OrderedDict
- import io
- from PIL import Image
- import cv2
- import json
- from tqdm import tqdm
- import csv
- import matplotlib.pyplot as plt
- from mpl_toolkits.mplot3d import Axes3D # ValueError: Unknown projection '3d' 必须加这一行才行
- from matplotlib import transforms
- import matplotlib.ticker as mticker
- from matplotlib.font_manager import FontProperties
- font_fname = "/usr/share/fonts/wps-office/simfang.ttf"
- # font_fname = "C:\Windows\Fonts\simfang.ttf"
- font = FontProperties(fname=font_fname)
- # plt.rcParams['font.sans-serif']=['simfang']#设置作图中文显示
- random.seed(888)
- def randomcolor():
- colorArr = ['1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F']
- color = ""
- for i in range(6):
- color += colorArr[random.randint(0, 14)]
- return "#" + color
- my_color = []
- for _ in range(1000):
- # 每帧 不同的颜色
- my_color.append(randomcolor())
- tx_file = "/home/jiang/jjj_grc_works/jiang_KGD_projects/18/tx.txt"
- rx_file = "/home/jiang/jjj_grc_works/jiang_KGD_projects/18/rx.txt"
- # x是字符串 x = (real,imag)
- convert = (lambda x: float(x[1:-1].split(b',')[0]) +
- float(x[1:-1].split(b',')[1]) * 1j)
- converters = {}
- for i in range(1):
- # 每列的转换器
- converters[i] = convert
- # tx = np.loadtxt(tx_file, dtype=np.complex64)
- tx = np.genfromtxt(tx_file, dtype=np.complex64, converters=converters, autostrip=True)
- # rx = np.loadtxt(rx_file, dtype=np.complex64)
- rx = np.genfromtxt(rx_file, dtype=np.complex64, converters=converters, autostrip=True)
- print("tx_len = ", tx.shape)
- print("rx_len = ", rx.shape)
- look_one_echo_wave_dat = tx
- fig = plt.figure(figsize=(18, 20)) # H=2000 W=1800像素
- plt.figure(1)
- plt.subplots_adjust(wspace=0, hspace=0.6)
- plt.subplot(4, 1, 1)
- plt.xlabel("点数", fontproperties=font, fontsize=15)
- plt.ylabel("value", fontproperties=font, fontsize=15)
- plt.title("Rx_IQ路_时域波形_len=%d" % len(look_one_echo_wave_dat), fontproperties=font, fontsize=16)
- plt.plot(look_one_echo_wave_dat.real, marker="o", markersize=4, markerfacecolor=my_color[0], color=my_color[0], label="real")
- plt.plot(look_one_echo_wave_dat.imag, marker="o", markersize=4, markerfacecolor=my_color[1], color=my_color[1], label="imag")
- plt.legend(loc="best")
- plt.subplot(4, 1, 2)
- plt.xlabel("点数_频率(M)", fontproperties=font, fontsize=15)
- plt.ylabel("幅值", fontproperties=font, fontsize=15)
- plt.title("Rx_幅度谱", fontproperties=font, fontsize=16)
- plt.plot(np.abs(fftshift(fft(look_one_echo_wave_dat))), marker="o", markersize=4, markerfacecolor=my_color[3], color=my_color[3])
- # plt.legend(loc="best")
- plt.subplot(4, 1, 3)
- plt.xlabel("点数", fontproperties=font, fontsize=15)
- plt.ylabel("相位", fontproperties=font, fontsize=15)
- plt.title("Rx_时域的相位角", fontproperties=font, fontsize=16)
- # 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])
- plt.plot(np.angle(look_one_echo_wave_dat), marker="o", markersize=4, markerfacecolor=my_color[4], color=my_color[4])
- # plt.legend(loc="best")
- plt.subplot(4, 1, 4)
- plt.xlabel("点数", fontproperties=font, fontsize=15)
- plt.ylabel("value", fontproperties=font, fontsize=15)
- plt.title("Rx_IQ路_时域的幅值", fontproperties=font, fontsize=16)
- plt.plot(np.abs(look_one_echo_wave_dat), marker="o", markersize=4, markerfacecolor=my_color[4], color=my_color[4])
- plt.show()
复制代码
|
|