我有一个问题(与我的 RAM)在这里: 它不能保存我想绘制的数据。我确实有足够的高清空间。有什么办法可以避免我的数据集的“阴影”吗?
具体来说,我处理数字信号处理,我必须使用高采样率。我的框架(GNU Radio)以二进制形式保存这些值(以避免使用太多磁盘空间)。我把它拆开。之后我需要策划。我需要可放大的,互动的情节。这是个问题。
是否有任何优化潜力,这或其他软件/编程语言(如 R 或左右) ,可以处理更大的数据集?实际上,我希望在我的图中有更多的数据。但我没有使用其他软件的经验。GNUplot 失败,具有类似于下面的方法。我不知道 R (喷气机)。
import matplotlib.pyplot as plt
import matplotlib.cbook as cbook
import struct
"""
plots a cfile
cfile - IEEE single-precision (4-byte) floats, IQ pairs, binary
txt - index,in-phase,quadrature in plaintext
note: directly plotting with numpy results into shadowed functions
"""
# unpacking the cfile dataset
def unpack_set(input_filename, output_filename):
index = 0 # index of the samples
output_filename = open(output_filename, 'wb')
with open(input_filename, "rb") as f:
byte = f.read(4) # read 1. column of the vector
while byte != "":
# stored Bit Values
floati = struct.unpack('f', byte) # write value of 1. column to a variable
byte = f.read(4) # read 2. column of the vector
floatq = struct.unpack('f', byte) # write value of 2. column to a variable
byte = f.read(4) # next row of the vector and read 1. column
# delimeter format for matplotlib
lines = ["%d," % index, format(floati), ",", format(floatq), "\n"]
output_filename.writelines(lines)
index = index + 1
output_filename.close
return output_filename.name
# reformats output (precision configuration here)
def format(value):
return "%.8f" % value
# start
def main():
# specify path
unpacked_file = unpack_set("test01.cfile", "test01.txt")
# pass file reference to matplotlib
fname = str(unpacked_file)
plt.plotfile(fname, cols=(0,1)) # index vs. in-phase
# optional
# plt.axes([0, 0.5, 0, 100000]) # for 100k samples
plt.grid(True)
plt.title("Signal-Diagram")
plt.xlabel("Sample")
plt.ylabel("In-Phase")
plt.show();
if __name__ == "__main__":
main()
类似 plt.swap _ on _ disk ()的东西可以在我的 SSD 上缓存这些东西;)