How to pass in a list of variables to "load" function without using eval?
15 次查看(过去 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 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Structures 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!