How can I make a column appending columns which are of size of sum of other column?
    4 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Totanly
 el 8 de En. de 2019
  
    
    
    
    
    Respondida: Andrei Bobrov
      
      
 el 9 de En. de 2019
            suppose i have three matrix of same length lat, lon and CG as
lat=[1 2 3 4 5];CG=[5 10 20 11 12];
i want to make like 
lat=[lat(1).*ones(CG(1),1);lat(2).*ones(CG(2),1);lat(3).*ones(CG(3),1);lat(4).*ones(CG(4),1);lat(5).*ones(CG(5),1);];
how to do it with loop for large vectors?
i tried like this 
n=length(CG)-1;
for i=1:n
    kk=lat(i).*ones(CG(i),1);
    kk1=[kk;lat(i+1).*ones(CG(i+1),1)]
end
it doesnot work.
0 comentarios
Respuesta aceptada
  Stephen23
      
      
 el 9 de En. de 2019
        
      Editada: Stephen23
      
      
 el 9 de En. de 2019
  
      >> lat = [1,2,3,4,5];
>> CG  = [5,10,20,11,12];
>> V = cell2mat(arrayfun(@(v,n)v*ones(n,1),lat(:),CG(:),'uni',0))
V =
   1
   1
   1
   1
   1
   2
   2
   2
   2
   2
   2
   2
   2
   2
   2
   3
   3
   3
   3
   3
   3
   3
   3
   3
   3
   3
   3
   3
   3
   3
   3
   3
   3
   3
   3
   4
   4
   4
   4
   4
   4
   4
   4
   4
   4
   4
   5
   5
   5
   5
   5
   5
   5
   5
   5
   5
   5
   5
   Or, if you really want to use a loop:
N = numel(lat);
C = cell(N,1);
for k = 1:N
    C{K} = lat(k).*ones(CG(k),1);
end
V = vertcat(C{:})
0 comentarios
Más respuestas (3)
  Andrei Bobrov
      
      
 el 9 de En. de 2019
        J = cumsum(CG);
ii = zeros(J(end),1);
ii(J-CG+1) = 1;
out = lat(cumsum(ii));
0 comentarios
Ver también
Categorías
				Más información sobre Matrix Indexing 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!



