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)
Mostrar comentarios más antiguos
Marina
el 10 de En. de 2014
Comentada: Marina
el 10 de En. de 2014
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?
0 comentarios
Respuesta aceptada
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
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
0 comentarios
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,:)
0 comentarios
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
0 comentarios
Ver también
Categorías
Más información sobre Loops and Conditional Statements en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!