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 日

1 投票

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 日

0 投票

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.

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

カテゴリ

ヘルプ センター および File Exchange で Loops and Conditional Statements についてさらに検索

製品

リリース

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by