2011-09-07 61 views
6

thể trùng lặp:
MATLAB: maximum pre-allocated size?Matrix giới hạn kích thước trong MATLAB

Có một giới hạn kích thước vào việc tạo ra một ma trận trong MATLAB? Nếu có, tôi có thể tìm thông tin này ở đâu?

+0

Có hai giới hạn: (1) số phần tử tối đa được phép trong một mảng, giới hạn cứng và (2) byte có sẵn cho một mảng. Những con số này rất khác nhau. Xem câu hỏi khác và [câu trả lời này] (http://stackoverflow.com/a/28907084/2778484) để biết chi tiết đầy đủ. – chappjc

Trả lời

5

Memory được giới hạn trong Matlab chỉ bởi dung lượng bộ nhớ (bao gồm cả bộ nhớ ảo) tạo sẵn cho nó bằng các hệ điều hành. Ma trận được lưu trữ trong bộ nhớ là không gian tiếp giáp, vì vậy nếu bạn có một ma trận mà sẽ chiếm 8GB bộ nhớ, bạn sẽ cần một phần lớn 8GB để có sẵn cho bạn trong bộ nhớ.

Bạn có thể sử dụng lệnh memory để cung cấp số liệu thống kê chi tiết về bộ nhớ có sẵn cho bạn, bao gồm số lượng bộ nhớ tiếp giáp có sẵn cho một ma trận đơn. Ví dụ:

> memory 

Maximum possible array:   677 MB (7.101e+008 bytes) * 
Memory available for all arrays: 1601 MB (1.679e+009 bytes) ** 
Memory used by MATLAB:   446 MB (4.681e+008 bytes) 
Physical Memory (RAM):   3327 MB (3.489e+009 bytes) 

    * Limited by contiguous virtual address space available. 
    ** Limited by virtual address space available. 

Để tính kích thước mảng mà giá trị Maximum possible array tương ứng, bạn chỉ cần chia cho số byte mà mỗi phần tử mảng yêu cầu. Từ các tài liệu memory:

tối đa có thể Mảng

tối đa có thể Mảng là kích thước của khối nhớ trống liền kề lớn nhất. Như vậy, nó là một ràng buộc trên trên mảng MATLAB lớn nhất có thể tạo vào lúc này.

MATLAB bắt nguồn con số này từ nhỏ của hai giá trị sau:

* The largest contiguous memory block found in the MATLAB virtual address space 
* The total available system memory 

Để xem có bao nhiêu phần tử mảng con số này thể hiện, chia cho số byte trong lớp mảng. Ví dụ, đối với mảng kép, chia cho 8. Số phần tử thực tế MATLAB có thể tạo luôn nhỏ hơn số này.

Mathworks cũng cung cấp tài liệu chi tiết về cách tránh Out of Memory lỗi here.

1

Có, bạn bị giới hạn bởi lượng RAM có sẵn trên máy của mình. Bạn có thể kiểm tra này trong MATLAB bằng cách sử dụng lệnh

feature('memstats') 
Các vấn đề liên quan