How can I load a field from a saved structure?
조회 수: 210 (최근 30일)
이전 댓글 표시
For my work, it is convenient to store measurement data in structures with many fields. The structure is useful for keeping all the measurements together, passing into functions that plot everything, etc. However the files get large and bulky to handle. I'd like to be able to load a specified field from the *.mat file containing the structure. I thought this was possible using this approach (saving with -struct flag), but only separate variables containing the fields are saved and the original structure is lost. Is there a way to retrieve a field out of an existing mat file containing a structure, as is shown below, perhaps using matfile ?
% Make the structure
a.Temperature.value = rand(1,10);
a.Temperature.units = 'C';
a.Humidity.value = rand(1,10);
a.Humidity.units = '%';
save('c:\temp\junk.mat', 'a'); % Save the structure
load('c:\temp\junk.mat', 'a.Temperature'); % Load a specified field (doesn't work)
댓글 수: 0
채택된 답변
Adam
2016년 5월 5일
편집: Adam
2016년 5월 5일
save('c:\temp\junk.mat', '-struct', 'a');
load('c:\temp\junk.mat', 'Temperature');
should work I think. Or
loadedVars = load('c:\temp\junk.mat', 'Temperature');;
Temperature = loadedVars.Temperature;
if you prefer.
댓글 수: 4
Utku Arslan
2021년 2월 26일
I gotcha bro!
function importfile(fileToRead1)
%IMPORTFILE(FILETOREAD1)
% Imports data from the specified file
% FILETOREAD1: file to read
% Import the file
newData1 = load('-mat', fileToRead1);
% Create new variables in the base workspace from those fields.
vars = fieldnames(newData1);
for i = 1:length(vars)
assignin('base', vars{i}, newData1.(vars{i}));
end
peace out, much love. -KP
추가 답변 (0개)
참고 항목
카테고리
Help Center 및 File Exchange에서 Workspace Variables and MAT-Files에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!