How to save specific rows of a Cell Array?
    9 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Sherwin
 el 8 de En. de 2021
  
    
    
    
    
    Comentada: Sherwin
 el 9 de En. de 2021
            Hi, 
I have a cell array O which stores the output of an iterative algorithm. After each 1000 iteration, I want to save the last 1000 rows of O in a .mat file and append it to the previously saved O,
O is a 20000x2 cell array. Each cell in the first column consists of a 95x4 cell which again consists of 1x5 cells. The second column is a 1x1 matrix.
In the 1000th iteration, I want to save the first 1000 rows of O in a .mat file.
In the 2000th iteration, I want to save the second 1000 rows of O (1001th row to 2000th row) and append it to the previously saved .mat file.
In the 3000th iteration, I want to save the third 1000 rows of O (2001th row to 3000th row) and append it to the same .mat file.
and so on......
I use the following code:
    if rem(it,1000) == 0
       save('O.mat',O(it-999:it), '-append');
    end
  and I receive the following error:
 Can someone please help me with this?
    Error using save
Must be a string scalar or character vector.
Error in HMainCode (line 90)
       save('O.mat',O(it-999:it), '-append');
0 comentarios
Respuesta aceptada
  Cris LaPierre
    
      
 el 8 de En. de 2021
        
      Editada: Cris LaPierre
    
      
 el 8 de En. de 2021
  
      When using save, the second input must be a variable name, not data. The variable name is text (string scalar or character vector.
Here is a description of what -append does from the save documentation page.
save(filename,variables,'-append') adds new variables to an existing file. If a variable already exists in a MAT-file, then save overwrites it with the value in the workspace.
For ASCII files, '-append' adds data to the end of the file.
6 comentarios
  Cris LaPierre
    
      
 el 9 de En. de 2021
				This example worked for me.
C=1:100;
save C.mat C
m = matfile('C.mat','Writable',true);
for a=2:5
    C(((a-1)*100+1):100*a) = (C(end)+1):100*a;
    m.C= [m.C C(end-99:end)];
end
% View last 10 values
z = m.C;
z(end-10:end)
Más respuestas (0)
Ver también
Categorías
				Más información sobre Workspace Variables and MAT Files 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!

