wektorowy realizację CHANGEM
z bsxfun
, max
Jakiś czas wstecz, powstał napisać dostosowanywektorowy wersję changem
realizowany z bsxfun
i max
jako część znacznie większego problemu. Odniesione rozwiązanie można znaleźć pod adresem here. Następnie, po kilku odsyłaczach zobaczyłem ten post i pomyślałem, że może on zostać opublikowany tutaj jako rozwiązanie dla łatwego znalezienia wśród przyszłych czytelników, jak również dlatego, że ten problem wymaga jedynie wydajnej i wektoryzowanej wersji changem
. Tak więc, oto kod funkcji -
%// 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;
Składnia używana w wersji niestandardowej ma taką samą składnię jak w changem.m
-
function B = changem(A, newval, oldval)
%CHANGEM Substitute values in data array ...
widziałaś [Wątek] (http: //www.mathworks .com/matlabcentral/newsreader/view_thread/264957)? –
Zaimplementowałem wektorowy sposób rozwiązania tego problemu [tutaj] (http://stackoverflow.com/a/28263828/3293881)! – Divakar