2013-09-06 46 views
5

Tôi đã chuyển mã cho một thuật toán isomap từ MATLAB sang Python. Tôi đang cố gắng hình dung mô hình thưa thớt bằng cách sử dụng chức năng gián điệp.tương đương scipy cho điệp viên MATLAB

MATLAB lệnh:

spy(sparse(A)); 
drawnow; 

Python lệnh:

matplotlib.pyplot.spy(scipy.sparse.csr_matrix(A)) 
plt.show() 

Tôi không thể sao chép các kết quả MATLAB bằng Python sử dụng lệnh trên. Sử dụng lệnh với chỉ A ở định dạng không thưa thớt cho kết quả khá giống với MATLAB. Nhưng nó mất khá nhiều thời gian (A là 2000-by-2000). Điều gì sẽ là MATLAB tương đương với một chức năng thưa thớt cho scipy?

Trả lời

11

Có thể đó là phiên bản matplotlib gây rắc rối cho tôi scipy.sparsematplotlib.pylab hoạt động tốt cùng nhau.

Xem mã mẫu bên dưới tạo ra âm mưu 'gián điệp' được đính kèm.

import matplotlib.pylab as plt 
import scipy.sparse as sps 
A = sps.rand(10000,10000, density=0.00001) 
M = sps.csr_matrix(A) 
plt.spy(M) 
plt.show() 

# Returns here '1.3.0' 
matplotlib.__version__ 

này mang lại cho âm mưu này: enter image description here

+0

Cảm ơn. Tôi đã tìm ra rằng lỗi trong mã của tôi để tạo ma trận A trong Python.One câu hỏi nhanh. Các ô vuông màu xanh được tạo ra là các số không phải không? – Nitin

+0

Có, bạn đã đúng. – Jan

2

Với bảng nhỏ:

import matplotlib.pylab as pl 
import scipy.sparse as sps 
import scipy.io 
import sys 
A=scipy.io.mmread(sys.argv[1]) 
pl.spy(A,precision=0.01, markersize=1) 
pl.show() 
Các vấn đề liên quan