structure is pointlessly nested within itself when I save it. How to unnest?
    12 visualizaciones (últimos 30 días)
  
       Mostrar comentarios más antiguos
    
    Alexei M
      
 el 16 de Jun. de 2020
  
    
    
    
    
    Comentada: Fangjun Jiang
      
      
 el 17 de Jun. de 2020
            Maybe kind of a stupid question, but I had a structure saved to disk--let's call it data1.mat. My script would have a few lines like this:
data1 = load('data1.mat');
...
There would be a few of these. Then my script commands would access variables like this: 
some_command(data1.some_variable)
I edited some numbers and wanted to update the saved file data1.mat. However, now when I load the updated file, it now has an extra "layer" of "data1". So to access a variable I now need to do:
some_command(data1.data1.some_variable)
This is stupid. How can I undo this?? This should be simple but for some reason I can't figure out how to remove the pointless extra level. I tried selecting all the fields inside the structure layer and saving them to disk, but the same thing happened. 
0 comentarios
Respuesta aceptada
  Steven Lord
    
      
 el 16 de Jun. de 2020
        When you save the struct that you received from load after modifying it, use the '-struct' option in your save call.
>> x = 1:10;
>> y = magic(5);
>> S = struct('x', x, 'y', y);
>> save('mymatfile.mat', '-struct', 'S');
>> whos -file mymatfile.mat
  Name      Size            Bytes  Class     Attributes
  x         1x10               80  double              
  y         5x5               200  double              
0 comentarios
Más respuestas (1)
  Fangjun Jiang
      
      
 el 16 de Jun. de 2020
        If you use load() without returning a variable, then the structure won't be created, but then you have to know what variables are in the .mat file. try this:
clear;
a=1;
b=2;
save;
clear
load;
whos
clear
data1=load;
whos
4 comentarios
  Fangjun Jiang
      
      
 el 17 de Jun. de 2020
				Don't use eval. If your data comes already in a structure, no need to re-create those variables. See Steven's answer.
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!


