Problem with vertically Concatenating vectors in a function
    8 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Joel Schelander
 el 27 de Abr. de 2021
  
    
    
    
    
    Comentada: Joel Schelander
 el 28 de Abr. de 2021
            I have a cell array ABC containing three cells each cell contains a 1x1000 double. What I want is to put every double on top of each other in a column vector (nx1).
ABC={1x1000 cell
1x992 cell
1x928 cell);
My function looks like this:
nr=3;
s=1000;
[D]=func(nr,ABC,s);
function D = func(nr,ABC,s)
D = [];
for y =1:nr
    data_length = length(ABC{y});
    for o = 1:data_length 
        G((o-1)*s+1:o*s) = [ABC{y}{o} zeros(1,s-length(ABC{y}{o}))].'; 
    end
    D = [D; G.']; 
end
end
My output should be D=2920000x1 double
But my output now is D=3000000x1 double
0 comentarios
Respuesta aceptada
  Stephen23
      
      
 el 28 de Abr. de 2021
        
      Editada: Stephen23
      
      
 el 28 de Abr. de 2021
  
      Rather than using a loop, a much better use of MATLAB would be to use comma-separated lists:
For example:
out = cellfun(@(a)a(:),[ABC{:}],'uni',0);
out = vertcat(out{:})
Or
out = [ABC{:}];
out = [out{:}].'
2 comentarios
  Stephen23
      
      
 el 28 de Abr. de 2021
				"Since every element is a double of 1x1000..."
Lets check that first. Show the output of these commands:
vec = cellfun(@numel,[AAG{:}]);
find(vec~=1000)
Más respuestas (1)
  DGM
      
      
 el 27 de Abr. de 2021
        % a cell array of numeric row vectors
A = {1:3,10:14,1:5}
% all row vectors concatenated into a col vector
bigcolvec = [A{:}]'
gives
A =
  1×3 cell array
    {1×3 double}    {1×5 double}    {1×5 double}
bigcolvec =
     1
     2
     3
    10
    11
    12
    13
    14
     1
     2
     3
     4
     5
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!


