Matlab-Daten in SageMath zeichnen?

895
Léo Léopold Hertz 준영

Ich habe eine Matlab-Matrix 100x100, die ich in Sage Notebook zeichnen möchte. ich renne

plot(open(DATA+'matlab.mat')) 

Ich bekomme

verbose 0 (2387: plot.py, generate_plot_points) WARNING: When plotting, failed to evaluate function at 200 points. verbose 0 (2387: plot.py, generate_plot_points) Last error message: ''file' object is not callable' 

und als Bild

enter image description here

und eine leere Figur.

Wie können Sie Matmabs .mat- Daten in Sage Math Notebook darstellen?

1
Ich denke, das ist eine Einschränkung von Sage Notebook. Léo Léopold Hertz 준영 vor 10 Jahren 0

2 Antworten auf die Frage

1
kcrisman

Der erste Schritt besteht darin, die Dateien tatsächlich zu lesen. Sie sind keine Rohdaten, sondern ein (vermutlich proprietärer) Rohdateityp. In dieser Stackoverflow-Frage erfahren Sie, wie Sie sie in Python einbinden können.

Sobald Sie Dinge in einem Scipy- oder Numpy-Array haben, sollten Sie in der Lage sein, konvertieren zu können. Sage-Code:

import numpy l=numpy.array([[1.0,2.0],[2.0,3.0]],dtype=float) M = matrix(l) M 

Beachten Sie jedoch, dass diese Funktion möglicherweise nicht so häufig verwendet wird. Daher müssen Sie unter Umständen subtile Dinge tun. Zum Beispiel musste ich den Datentyp meines Numpy-Arrays angeben.

1
Léo Léopold Hertz 준영

Beispiel für den funktionierenden Code, abgeleitet vom Sage-Supportforum:

import matplotlib.pyplot as plt import scipy.io data = scipy.io.loadmat('arrytmia_data_bad.mat') x = data['data'] plt.plot(x, linestyle='', marker='x') plt.savefig('a.png') # vs Python: plt.show()