Mean of every n number of doubles in a cell
    4 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Adnan Habib
 el 28 de Feb. de 2023
  
    
    
    
    
    Comentada: Adnan Habib
 el 28 de Feb. de 2023
            I have a cell with 990 doubles of 300 by 300 matrices. Lets call it T
I want to create a new cell with 26 doubles of 300 by 300 matrices each of which are the mean values of every 39 doubles from T (the 26th double of the new cell will be the mean of the final 15 doubles of T). i.e. (39 X 25) + (15 X 1) = 990. 
Kindly help me with the code for this.  
2 comentarios
  Dyuman Joshi
      
      
 el 28 de Feb. de 2023
				How do you want to group them?
#1 - [1-39], [40-78], [79-117], ...
#2 - [1,39,78,117, ...], [2, 40, 79, 118, ...], [3, 41, 80, 119, ...]
Respuesta aceptada
  Jan
      
      
 el 28 de Feb. de 2023
        
      Editada: Jan
      
      
 el 28 de Feb. de 2023
  
      I've reduced the test data size to 30x30 matrices - use the original sizes for your implementation:
T = squeeze(num2cell(rand(30, 30, 990), 1:2));  % Some test data, {990 x 1} cell
nT = numel(T);
R  = cell(26, 1);
iR = 0;
for iT = 1:39:nT                  % Initial index of this block
    fT  = min(nT, iT + 38);       % Final index of this block
    tmp = 0;
    for k = iT:fT                 % Accumulate elements of T
        tmp = tmp + T{k};
    end
    iR    = iR + 1;               % Next output
    R{iR} = tmp / (fT - iT + 1);  % Mean value
end
Alternative approach:
nT = numel(T);
% Create [1, 40, 79, ...] with the last element is nT+1:
w  = 39;
iT = 1:w:nT;
iT(end + (iT(end) == nT)) = nT + 1;  % Consider nT is divisable by w
nR = numel(iT) - 1;
R2 = cell(nR, 1);
for iR = 1:nR
    fT  = iT(iR + 1) - 1;       % Final index of this block
    tmp = 0;
    for k = iT(iR):fT           % Accumulate elements of T
        tmp = tmp + T{k};
    end
    R2{iR} = tmp / (fT - iT(iR) + 1);  % Mean value
end
Más respuestas (0)
Ver también
Categorías
				Más información sobre Logical 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!