Tôi muốn xóa một số cột và hàng khỏi ma trận lớn. Đó là các cột và các hàng có tất cả các giá trị 0. Có bất kỳ chức năng trong MATLAB có thể làm điều đó cho bạn khá nhanh? Ma trận của tôi là thưa thớt. Tôi đang thực hiện theo cách này:Xóa cột số 0 và hàng khỏi ma trận MATLAB
% To remove all zero columns from A
ind = find(sum(A,1)==0) ;
A(:,ind) = [] ;
% To remove all zeros rows from A
ind = find(sum(A,2)==0) ;
A(ind,:) = [] ;
Sẽ tốt hơn nếu có một dòng mã cho điều này vì tôi có thể thực hiện loại công việc này nhiều lần. Cảm ơn
Mã của bạn có vẻ tốt. Nếu ma trận của bạn là thưa thớt nó có thể nhanh hơn mặc dù khi bạn sao chép các phần tử khác không (không biết, chỉ là một dự đoán): 'B = A (~ ind, :)'. –
Có thể trùng lặp của [Loại bỏ số không khỏi ma trận - Không thưa thớt] (http://stackoverflow.com/questions/738438/removing-zeros-from-a-matrix-not-sparse) – GameOfThrows
bằng cách sử dụng 'tất cả (A, 1) 'hoặc' tất cả (A, 2) 'có thể nhanh hơn' tổng (A, 1) ', nhưng tôi không kiểm tra. – Max