How to pass in a list of variables to "load" function without using eval?
조회 수: 10 (최근 30일)
이전 댓글 표시
Is there a way to load in a list of variables from a file, if the list of variables is passed in? I would like to avoid using eval. Here is what I am doing:
% Create dummy variables so this example works
dog = rand(1,5); cat = rand(1,5);
budgie = rand(1,5); fish = rand(1,5);
alligator=rand(1,5); hamster = rand(1,5);
% Create dummy file
save('myPetsFile.mat'); % Real mat file is large, 50+ variables
petList = {'dog', 'cat', 'budgie'};
filePets = 'myPetsFile.mat';
strPets = sprintf('''%s'',', petList{:}); % Add single quotes and comma
strPets = strPets(1:end-1); % Remove trailing comma
eval(['PS = load(filePets, ' strPets ');']);
I also would like to be able to combine the listed variables with additional directly-named variables, such as 'fish', 'alligator' in this example, but again avoid the eval command:
eval(['PS = load(filePets, ' strPets ', ''fish'', ''alligator'');']);
댓글 수: 0
채택된 답변
Kelly Kearney
2014년 5월 19일
Don't need the sprintf at all, as long as petList is already a cell array of strings:
PS = load(filePets, petList{:});
추가 답변 (1개)
참고 항목
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!