How to extract first non-zero element in each column and put into a new array
12 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
I have an array which represents a 2-D vertical slice of a cloud. I want to get cloud-top properties for the cloud so I want to just plot a line graph of the top layer. But the row corresponding to the first non-zero number changes with each column. Does anyone know how I can extract the first non-zero element in each column and put that into a new array? For example:
in=[0 0 6 0 0 5;
1 3 5 1 0 4;
4 4 5 3 4 5]
out=[1 3 6 1 4 5]
0 comentarios
Respuestas (4)
the cyclist
el 16 de Sept. de 2019
Editada: the cyclist
el 16 de Sept. de 2019
Here is a one way:
in=[0 0 6 0 0 5;
1 3 5 1 0 4;
4 4 5 3 4 5];
[m,n] = size(in);
[i,j] = find(in);
[~,jj] = unique(j);
out = in(i(jj)+(0:m:(m*(n-1)))')'
0 comentarios
the cyclist
el 16 de Sept. de 2019
Editada: the cyclist
el 16 de Sept. de 2019
Here is one way:
in=[0 0 6 0 0 5;
1 3 5 1 0 4;
4 4 5 3 4 5];
mid = in;
for nr = size(in,1)-1:-1:1
mid(nr,mid(nr,:)==0) = mid(nr+1,mid(nr,:)==0);
end
out = mid(1,:);
0 comentarios
the cyclist
el 16 de Sept. de 2019
Here is one way:
in=[0 0 6 0 0 5;
1 3 5 1 0 4;
4 4 5 3 4 5];
[m,n] = size(in);
out = nan(1,n);
for nc = 1:n
[~,~,out(nc)] = find(in(:,nc),1);
end
0 comentarios
Ver también
Categorías
Más información sobre Point Cloud Processing 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!