Tôi chưa sử dụng PackedArray trước đây, nhưng chỉ bắt đầu xem xét việc sử dụng chúng từ việc đọc một số thảo luận về chúng ở đây ngày hôm nay.Trên PackedArray, tìm kiếm lời khuyên để sử dụng chúng
Những gì tôi có là rất nhiều ma trận 1D và 2D kích thước lớn của tất cả các thực, và không có biểu tượng (nó là một giải pháp PDE khác nhau hữu hạn), và vì vậy tôi nghĩ rằng tôi nên tận dụng lợi thế của việc sử dụng PackedArray.
Tôi có chức năng khởi tạo nơi tôi phân bổ tất cả dữ liệu/lưới cần thiết. Vì vậy, tôi đã đi và sử dụng ToPackedArray
trên chúng. Nó có vẻ nhanh hơn một chút, nhưng tôi cần làm thử nghiệm hiệu năng hơn để so sánh tốc độ tốt hơn trước và sau và cũng so sánh việc sử dụng RAM.
Nhưng trong khi tôi đang xem xét điều này, tôi nhận thấy rằng một số hoạt động trong M sẽ tự động trả về danh sách trong PackedArray, và một số thì không.
Ví dụ, này không trở lại đóng gói mảng
a = Table[RandomReal[], {5}, {5}];
Developer`PackedArrayQ[a]
Nhưng này không
a = RandomReal[1, {5, 5}];
Developer`PackedArrayQ[a]
và này không
a = Table[0, {5}, {5}];
b = ListConvolve[ {{0, 1, 0}, {1, 4, 1}, {0, 1, 1}}, a, 1];
Developer`PackedArrayQ[b]
và cũng nhân ma trận không kết quả trở lại trong mảng đóng gói
a = Table[0, {5}, {5}];
b = a.a;
Developer`PackedArrayQ[b]
Nhưng yếu tố nhân khôn ngoan không
b = a*a;
Developer`PackedArrayQ[b]
Câu hỏi của tôi: Có một danh sách ở đâu đó mà tài liệu mà lệnh M trở PackedArray so với không? (giả sử dữ liệu đáp ứng các yêu cầu, chẳng hạn như Thực, không hỗn hợp, không có biểu tượng, vv ..)
Ngoài ra, một câu hỏi nhỏ, bạn có nghĩ rằng tốt hơn nên kiểm tra trước nếu danh sách/ma trận được tạo đã được đóng gói chưa trước khi gọi điện thoại số ToPackedArray
trên đó? Tôi sẽ nghĩ rằng gọi số ToPackedArray
trong danh sách đã được đóng gói sẽ không mất phí, vì cuộc gọi sẽ trở lại ngay lập tức.
cảm ơn,
cập nhật (1)
Chỉ muốn đề cập đến, mà chỉ phát hiện ra rằng những biểu tượng PackedArray không được phép trong CDF bản demo như tôi đã nhận ra lỗi tải lên một với một. Vì vậy, phải loại bỏ tất cả mã đóng gói của tôi. Vì tôi chủ yếu viết các bản demo, bây giờ chủ đề này chỉ là một mối quan tâm học thuật đối với tôi. Nhưng muốn cảm ơn mọi người về thời gian và câu trả lời hay.
Bạn có thể giải thích một chút về các ký hiệu PackedArray không được phép trong CDF demo hay không. Có lẽ với một ví dụ? Đây là điều tôi quan tâm. –
Xin chào, tôi vừa tạo một bản demo nhỏ (bảng kiểu trình diễn, v.v ...) và chỉ cần thực hiện một thao tác nhỏ và sử dụng một cái gì đó như 'ToPackedArray [Table [0, {10}]]' trong đó, và sau đó tải nó lên Vùng tác giả WRI để tạo một CDF demo nhưng trình tải lên WRI (xác minh tệp demo trước khi tải lên) đã từ chối nó nói rằng biểu tượng 'PackedArray' không được phép. Vì vậy, về cơ bản gói này không được phép sử dụng trong trình diễn. Bạn có thể tự mình thử. Tôi chắc chắn có lý do chính đáng tại sao, an ninh, hỗ trợ, vv ... nhưng dòng dưới cùng, PackedArray không thể được sử dụng trong một cuộc biểu tình WRI ít nhất là bây giờ – Nasser
ok vì vậy điều này giống như một số loại sàng lọc mà Wolfram đang làm so với một tấm chăn chặn chức năng đó trong CDF. Điều đó có vẻ lạ. –