Matrix function for subtracting and adding numbers from values in a matrix
조회 수: 2 (최근 30일)
이전 댓글 표시
I am trying to make a function that focuses on a matrix. I want the function to subtract 4 from any number in the matrix > 4, and then add 1 to each surrounding number in the matrix, until all numbers are < 4
If the matrix = [0 0 0;0 9 0; 0 0 0]
I want it to change to [0 2 0;2 1 2;0 2 0]
댓글 수: 0
채택된 답변
Stephen23
2020년 4월 16일
편집: Stephen23
2020년 4월 16일
M = [0,0,0;0,9,0;0,0,0];
C = [0,1,0;1,-4,1;0,1,0];
while any(M(:)>4)
M = M + conv2(+(M>4),C,'same');
end
댓글 수: 4
Stephen23
2020년 4월 17일
편집: Stephen23
2020년 4월 17일
"This solution works for the numbers I proposed but what could you do differently to make a function that changed worked for any number in the matrix being larger than 4"
It already does:
>> M = [0 0 0 0; 0 4 5 2; 0 1 1 0]
M =
0 0 0 0
0 4 5 2
0 1 1 0
>> C = [0,1,0;1,-4,1;0,1,0];
>> while any(M(:)>4), M = M + conv2(+(M>4),C,'same'); end
>> M
M =
0 1 1 0
1 1 2 3
0 2 2 0
So far you have not actually given a specific example of when my code does not work as requested, nor explained why you think it does not work with "any number in the matrix being larger than 4" (even though it does, as shown above), nor have you explained why you think that it only "...works for the numbers I proposed".
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Matrices and Arrays에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!