У меня есть проблема (с моей ОЗУ) здесь: она не может хранить данные, которые я хочу построить. У меня достаточно места для HD. Есть ли какое-либо решение, чтобы избежать "затенения" моего набора данных?
Конкретно я занимаюсь цифровой обработкой сигналов, и мне приходится использовать высокий уровень выборки. Моя инфраструктура (GNU Radio) сохраняет значения (во избежание использования большого количества дискового пространства) в двоичном формате. Я распакую его. Впоследствии мне нужно заговорить. Мне нужен сюжет, масштабируемый и интерактивный. И это проблема.
Есть ли какой-либо потенциал оптимизации для этого или другой язык программирования/программирования (например, R или около того), который может обрабатывать большие наборы данных? На самом деле я хочу получить гораздо больше данных на своих сюжетах. Но у меня нет опыта работы с другим программным обеспечением. GNUplot терпит неудачу, с аналогичным подходом к следующему. Я не знаю R (jet).
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;)