MATLAB: Perform operations on non-zero locations of the matrix

imageMATLABmatrix

pic1=rgb2gray(pic);
pic2 = imnoise(pic1,'salt & pepper',0.05);
%%%%%%%Hard Thresholding%%%%%%
Container=pic2>80;
Container=uint8(Container);
pic3=pic2.*Container;
Hi
this is my Hard Thresholding in pic3
now i want Soft Thresholding by subtracting the places have non-zero values in pic3 from 80 without using a loop
Thanks for your guidance

Best Answer

mask = pic3 > 0; % mask for non-zero values of pic3
pic3(mask) = pic3(mask) - 80;