Set zero in certain rows of an array to value x

3 次查看(过去 30 天)
Hi,
I have an 3x6 array A:
A=[1 1 0 1 0 1;1 1 0 0 1 1; 1 1 0 1 1 1];
x=1000000;
Now i want to set all zeros in row 2 and 3 to 1.000.000. The zeros in row 1 shall stay zero, so
A(A==0)=x;
doesn`t work, because it makes every zero in the whole array to value 1000000.
I tried it with help of an if-condition, but it doesn´t work either:
if A(2:3,:)==0
A(2:3,:)=x;
end
I will greatly appreciate any assistance.

采纳的回答

Jan
Jan 2019-2-22
编辑:Jan 2019-2-22
A = [1 1 0 1 0 1;1 1 0 0 1 1; 1 1 0 1 1 1];
x = 1000000;
% all zeros in row 2 and 3 to 1.000.000
match = (A == 0);
match(1, :) = false; % Do not access 1st row
A(match) = x
or
B = A(2:3, :);
B(B == 0) = x;
A(2:3, :) = B

更多回答(1 个)

Andrei Bobrov
Andrei Bobrov 2019-2-22
A((A + [0;2;2]) == 2) = 1e6;

类别

Help CenterFile Exchange 中查找有关 Data Type Conversion 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by