Can anyone help me to search for ones in the rows of a matrix and replace the remaining ones with zeros?

1 visualización (últimos 30 días)
Hi!
I am quite new in Matlab. I have a a matrix with ones and zeros, for ex a = [1 1 0; 1 1 1; 0 1 1]. I want to get a new matrix with ones only in the first position it occured in A ROW, and replace all the other ones in THE ROW with zeros. So there should be only one number 1 in the row, or not at all. I have tried this a while and for loop combination, but it didn't seem to work. Any ideas?

Respuesta aceptada

Image Analyst
Image Analyst el 10 de En. de 2014
Do you mean like this:
a = [1 1 0; 1 1 1; 0 1 1]
b=zeros(size(a)); % Initialize.
for row = 1 : size(a, 1)
first1 = find(a(row,:), 1, 'first');
b(row, first1) = 1; % Set column of the first 1 in the row.
end
b % print to command window
a =
1 1 0
1 1 1
0 1 1
b =
1 0 0
1 0 0
0 1 0

Más respuestas (3)

Youssef  Khmou
Youssef Khmou el 10 de En. de 2014
Here is the general case:
A=round(rand(10));
for n=1:10
for p=1:10
if (A(n,p)==1)
A(n,p+1:end)=0;
end
end
end

Azzi Abdelmalek
Azzi Abdelmalek el 10 de En. de 2014
a = [1 1 0; 1 1 1; 0 1 1]
b=zeros(size(a))
b(1,:)=a(1,:)

Mischa Kim
Mischa Kim el 10 de En. de 2014
>> a = [1 1 0; 1 1 1; 0 1 1]
a =
1 1 0
1 1 1
0 1 1
>> b = [a(:,1)>0 zeros(length(a(:,1)),length(a(1,:))-1)]
b =
1 0 0
1 0 0
0 0 0

Categorías

Más información sobre Loops and Conditional Statements en Help Center y File Exchange.

Etiquetas

Community Treasure Hunt

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

Start Hunting!

Translated by