Changing values in matrix under certain condition

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

 채택된 답변

Jan
Jan 2021년 3월 13일
편집: Jan 2021년 3월 13일
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);

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Spline Postprocessing에 대해 자세히 알아보기

질문:

2021년 3월 13일

댓글:

2021년 3월 13일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by