# Replacing matrix n column values

조회 수: 2(최근 30일)
Santos García Rosado 2021년 5월 6일
댓글: Santos García Rosado 2021년 5월 7일
Hello community,
If I want to make every negative value inside a matrix equal to zero I would use the following code:
MyMatrix(MyMatrix<0) = 0
And If i wanted to make only one column negative values zero I'd use this:
n = 5; % The column i want to replace.
MyMatrix( MyMatrix(:,n)<0, n ) = 0
The real issue is that now I have a 50x100 matrix where I need to apply the previous idea (make every negative value equal to zero) but within columns 70 to 80(range). This could be easily done with a loop, but I'm sure there is a way to work around it.
Any ideas?
Thank you,
Santos

댓글을 달려면 로그인하십시오.

### 채택된 답변

James Tursa 2021년 5월 6일
E.g.,
temp = A(:,70:80);
temp(temp<0) = 0;
A(:,70:80) = temp;
##### 댓글 수: 1표시숨기기 없음
Santos García Rosado 2021년 5월 7일
That's it! Thank you James!

댓글을 달려면 로그인하십시오.

### 추가 답변(1개)

Sergey Kasyanov 2021년 5월 6일
Hello,
There are some no pretty but working solutions,
n = [70, 80];
%A is MyMatrix
%1
A(A(:).' < 0 &...
(1:numel(A)) > size(A, 1) * (n(1) - 1) &...
(1:numel(A)) <= size(A, 1) * (n(2))) = 0;
%2
A(A < 0 &...
repmat(1:size(A, 2), size(A, 1), 1) >= n(1) &...
repmat(1:size(A, 2), size(A, 1), 1) <= n(2)) = 0;
%3
n = [70:80]
A(:, n) = A(:, n) .* (A(:, n) >= 0);
##### 댓글 수: 1표시숨기기 없음
Santos García Rosado 2021년 5월 7일
Thank you Sergey! Check Jame's solution.

댓글을 달려면 로그인하십시오.

R2021a

### Community Treasure Hunt

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

Start Hunting!

Translated by