How to pass in a list of variables to "load" function without using eval?

조회 수: 17 (최근 30일)
K E
K E 2014년 5월 19일
댓글: K E 2014년 5월 19일
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'');']);

채택된 답변

Kelly Kearney
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
K E
K E 2014년 5월 19일
Perfect, thanks. Knew there had to be a simpler way! This works too,
PS = load(filePets, petList{:}, 'fish', 'alligator');

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Azzi Abdelmalek
Azzi Abdelmalek 2014년 5월 19일
PS = load(filePets, sprintf('%s',petList{:}))
  댓글 수: 1
K E
K E 2014년 5월 19일
The load command seems to want the quotes and commas in its inputs which is why I had to use eval. I revised the example.

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 Structures에 대해 자세히 알아보기

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by