matlab - is it possible remove for loops from my code? -


i want remove nested loops code? can't remove them.

k = 3;     data = rand(100,5);     m = zeros(size(data));     n = size(data,2); % number of features m = size(data,1); % number of objects bound = zeros(n,k+1);  max = max(data); min = min(data);   ii = 1:n     bound(ii,:) = linspace(min(ii), max(ii), k+1); end  bound(:,end) = bound(:,end)+eps;  tic; ii = 1:m     jj=1:n         kk=1:k             if bound(jj,kk)<=data(ii,jj) && data(ii,jj)<bound(jj,kk+1)                 m(ii,jj) = kk;             end         end     end end 

you can away nesting upto limit.

at glance, jj index seems uniform in operation within nested loop, can replace

for ii = 1:m     jj=1:n         kk=1:k             if bound(jj,kk)<=data(ii,jj) && data(ii,jj)<bound(jj,kk+1)                 m(ii,jj) = kk;             end         end     end end 

by simply

for ii = 1:m     kk=1:k         m(ii,(bound(:,kk)<=data(ii,:)' & data(ii,:)'<bound(:,kk+1))) = kk;     end end 

this give exact same result before.


Comments

Popular posts from this blog

c# - Send Image in Json : 400 Bad request -

jquery - Fancybox - apply a function to several elements -

An easy way to program an Android keyboard layout app -