MATLAB: Changing values in matrix under certain condition

conditionifmatrixnegativevalues

x = 0:50;
y = 0:20;
[X,Y] = ndgrid(x,y);
XY = [X(:), Y(:)];
R=5;
AB=[((X(:)-25).^2 + (Y(:)-10).^2).^0.5];
Displacement = permute(reshape(AB.',(compwidth+1),(compdepth+1),[]),[2 1 3])-R
How can I change the values of the matrix which meet certain condition into another specific number for further calculation?
if Displacement(:,:)<=0
%that specific value become 0
else
%values remain unchange
end

Best Answer

Displacement = max(Displacement, 0);
Notes:
  • sqrt(x) is 50% faster than x^0.5
  • [ ] is the Matlab operator for a concatenation. In this line, you concatenate a vector with nothing, so omit the square bracket to save time:
AB=[((X(:)-25).^2 + (Y(:)-10).^2).^0.5];
% Faster:
AB = sqrt((X(:)-25).^2 + (Y(:)-10).^2);