2008-09-18 50 views
36

Để phân phối một hàm tôi đã viết phụ thuộc vào các hàm khác mà tôi đã viết có phụ thuộc của riêng mình và cứ như vậy mà không phân phối mọi tệp m tôi từng viết, tôi cần tìm ra danh sách đầy đủ phụ thuộc là cho một m-file nhất định. Có cách tải xuống miễn phí/được tải xuống miễn phí để thực hiện việc này không?Làm cách nào để tạo danh sách các phụ thuộc hàm trong MATLAB?

Cụ thể là tôi quan tâm đến các giải pháp cho MATLAB 7.4.0 (R2007a), nhưng nếu có cách khác để thực hiện nó trong các phiên bản cũ, bằng mọi cách, hãy thêm chúng vào đây.

Trả lời

35

Đối với các phiên bản mới hơn của Matlab (ví dụ như 2007 hoặc 2008) bạn có thể sử dụng được xây dựng trong các chức năng:

  1. mlint
  2. báo cáo phụ thuộc và
  3. báo cáo bảo hiểm

lựa chọn khác là để sử dụng hồ sơ của Matlab. Lệnh này là profile, nó cũng có thể được sử dụng để theo dõi các phụ thuộc. Để sử dụng hồ sơ, bạn có thể làm

>> profile on % turn profiling on 
>> foo;   % entry point to your matlab function or script 
>> profile off % turn profiling off 
>> profview  % view the report 

Nếu hồ sơ không có sẵn, sau đó có lẽ là hai chức năng sau đây (đối với tiền MATLAB 2015a):

  1. depfun
  2. depdir

Ví dụ:

>> deps = depfun('foo'); 

cung cấp cấu trúc, chi tiết, chứa tất cả các phụ thuộc của foo.m.

Từ các câu trả lời 23, các phiên bản mới hơn của MATLAB (bài 2015a) sử dụng matlab.codetools.requiredFilesAndProducts thay thế.

xem câu trả lời

EDIT:

Hãy cẩn thận nhờ @ Mike Katz bình luận

  • Hãy nhớ rằng Profiler sẽ chỉ cho bạn thấy file mà thực sự đã được sử dụng trong những lần chạy , vì vậy nếu bạn không đi thông qua mỗi chi nhánh, bạn có thể có các phụ thuộc bổ sung. Báo cáo phụ thuộc là một công cụ tốt, nhưng chỉ giải quyết các phụ thuộc tĩnh trên đường dẫn và chỉ cho các tệp trong thư mục đơn .

  • Depfun đáng tin cậy hơn nhưng cung cấp cho bạn mọi điều có thể bạn có thể nghĩ đến, và vẫn bỏ lỡ LOAD và EVAL.

+2

Hãy nhớ rằng Profiler sẽ chỉ hiển thị cho bạn các tệp thực sự được sử dụng trong các lần chạy đó, vì vậy nếu bạn không đi qua từng nhánh, bạn có thể có các phụ thuộc bổ sung. Các repot phụ thuộc là một công cụ tốt, nhưng chỉ giải quyết phụ thuộc tĩnh trên đường dẫn và chỉ cho các tập tin trong một thư mục duy nhất. –

+3

Depfun đáng tin cậy hơn nhưng cung cấp cho bạn mọi điều có thể, nhưng vẫn nhớ LOAD và EVAL. –

+0

Cảm ơn @Mik Katz vì đã cẩn thận. – Azim

6

Đối MATLAB 2015a và sau đó bạn tốt nhất là nên xem xét matlab.codetools.requiredFilesAndProducts

hoặc doc matlab.codetools.requiredFilesAndProducts

depfun được đánh dấu phải được loại bỏ trong một thông cáo trong tương lai.

1

Cập nhật: cho MATLAB 2015b, depfun và depdir đã bị xóa, vì vậy bạn phải sử dụng matlab.codetools.requiredFilesAndProducts().

+0

Điều này đã được viết trong một câu trả lời khác một năm trước đây. –

Các vấn đề liên quan