2013-07-31 70 views
5

Tôi đang sử dụng armadillo chủ yếu cho ma trận đối xứng và tam giác. Tôi muốn có hiệu quả về mặt bộ nhớ. Tuy nhiên, có vẻ như không có cách nào khác ngoài việc tạo ra một tấm thảm mới và điền vào các số không (đối với hình tam giác) hoặc với các bản sao (đối xứng) phần dưới/trên của ma trận.Armadillo C++: Có cách nào cụ thể để tạo ma trận tam giác hoặc đối xứng hiệu quả

Có cách nào hiệu quả hơn khi sử dụng ma trận tam giác/đối xứng bằng Armadillo không?

Cảm ơn, Antoine

Trả lời

3

Không có hỗ trợ cụ thể cho ma trận hình tam giác hoặc dải ở Armadillo. Tuy nhiên, vì phiên bản 3.4 hỗ trợ cho các ma trận thưa thớt đã dần dần được thêm vào. Tùy thuộc vào các chức năng Armadillo bạn cần, và sự thưa thớt của ma trận của bạn, bạn có thể đạt được từ việc sử dụng SpMat<type> thực hiện các compressed sparse column (CSC) format. Đối với mỗi giá trị nonzero trong ma trận của bạn định dạng CSC lưu trữ chỉ mục hàng cùng với giá trị, do đó bạn có thể sẽ không lưu nhiều bộ nhớ cho ma trận hình tam giác. Tuy nhiên, ma trận đường chéo dải sẽ tiêu thụ ít bộ nhớ hơn đáng kể.

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