MATLAB Answers

Replacing matrix n column values

1 ビュー (過去 30 日間)
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 件のコメント
Santos García Rosado
Santos García Rosado 2021 年 5 月 7 日
That's it! Thank you James!

サインインしてコメントする。

その他の回答 (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.

サインインしてコメントする。

Community Treasure Hunt

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

Start Hunting!

Translated by