Replacing matrix n column values

조회 수: 2 (최근 30일)
Santos García Rosado
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
James Tursa 2021년 5월 6일
E.g.,
temp = A(:,70:80);
temp(temp<0) = 0;
A(:,70:80) = temp;

추가 답변 (1개)

Sergey Kasyanov
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
Santos García Rosado 2021년 5월 7일
Thank you Sergey! Check Jame's solution.

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

카테고리

Help CenterFile Exchange에서 Resizing and Reshaping Matrices에 대해 자세히 알아보기

제품


릴리스

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by