adding a condition to blkproc()
Afficher commentaires plus anciens
I use the following code to find the mean value of non-zero values of each block of an array. I wonder how I can add a condition to have a mean value if the number of non-zero values are bigger than 75% of the size of the block. I apperciate your help.
mean_wout_zeros = blkproc(Myarray,[block block],@(x)sum(x(:))./(sum(logical(x(:)))));
Réponses (1)
Sean de Wolski
le 8 Juil 2011
Just use this as your function
function out = meanZ75(in)
%mean sans zeros if there are 25% or more zeros
%pure mean if there are < 25% zeros
%SCd 07/11/2011
%
in = in(:);
if nnz(in) >= 0.25*length(in);
out = mean(in(~~in));
else
out = mean(in);
end
4 commentaires
Hassan
le 9 Juil 2011
Ashish Uthama
le 11 Juil 2011
Hassan, use meanZ75 as the input function handle: meanOut = blkproc(Myarray, [b b], @meanZ75);
Hassan
le 15 Juil 2011
Sean de Wolski
le 15 Juil 2011
save
function out = meanZ75 etc.
to 'meanZ75.m' in your MATLAB folder in your documents. Then use it as the function for blkproc
blkoproc(new_array2(:,:,iu),[10 10],'meanZ75');
Catégories
En savoir plus sur Blocked Images dans Centre d'aide et File Exchange
Produits
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!