Replacing matrix n column values

4 views (last 30 days)
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

Accepted Answer

James Tursa
James Tursa on 6 May 2021
E.g.,
temp = A(:,70:80);
temp(temp<0) = 0;
A(:,70:80) = temp;

More Answers (1)

Sergey Kasyanov
Sergey Kasyanov on 6 May 2021
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);

Products


Release

R2021a

Community Treasure Hunt

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

Start Hunting!