Thực hiện Vectorized CHANGEM
với bsxfun
, max
Đôi khi trở lại, tôi đã được thực hiện để viết một tùy chỉnhvector hóa phiên bản của changem
thực hiện với bsxfun
và max
như là một phần của một vấn đề lớn hơn nhiều. Có thể tìm thấy giải pháp được tham chiếu here. Sau đó, sau vài liên kết tôi thấy bài đăng này và nghĩ rằng nó có thể được đăng ở đây như là một giải pháp để tìm kiếm dễ dàng giữa các độc giả trong tương lai cũng bởi vì vấn đề này chỉ yêu cầu một phiên bản hiệu quả và vectơ của changem
. Vì vậy, đây là mã chức năng -
%// CHANGEM_VECTORIZED Vectorized version of CHANGEM with MAX, BSXFUN
function B = changem_vectorized(A,newval,oldval)
B = A;
[valid,id] = max(bsxfun(@eq,A(:),oldval(:).'),[],2); %//'
B(valid) = newval(id(valid));
return;
Cú pháp được sử dụng trong các phiên bản tùy chỉnh theo cú pháp tương tự như trong changem.m
-
function B = changem(A, newval, oldval)
%CHANGEM Substitute values in data array ...
Bạn đã xem [chủ đề này] (http: //www.mathworks .com/matlabcentral/newsreader/view_thread/264957)? –
Thực hiện một cách vectorized để giải quyết vấn đề này [ở đây] (http://stackoverflow.com/a/28263828/3293881)! – Divakar