MATLAB: How to use eval() command to save the workspace variables in different working directory

matlab guithe evil eval again

The following code works fine in my GUI
Workspace variable : i=1; simtype='gopi'; t=[0 1]; e='hi';
eval(['save Batch_' num2str(i) '_Results_' simtype '.mat t;']); % storing of 't' variable in pwd
eval(['save Batch_' num2str(i) '_Results_' simtype '.mat ' e ' -append;']); % storing of some variables in pwd
eval (['Rin=load(''Batch_' num2str(i) '_Results_PE15.mat'');']); % load again the same variables from pwd
The above code used to save my workspace variables in present working directory. But i would like to save those workspace variables in different working directory. I have tried some comments but it doesnot work good, it shows error. Please check those codes below:
Error comes while using following codes:
%% pwds - different working directory - D:\matlabfiles\ACTIVITY\Itr 3\Script
eval(['save(fullfile(' pwds 'Batch_' num2str(i) '_Results_' simtype '.mat,t;']);
I am getting follwing error only when i am trying to save the file in different working directory (used above code).
% Error: Invalid use of operator
Kindly help me to get the correct code format for saving the workspace variables(not all variables – only some variables) in different working directory which also works in loops, if possible write through eval command itself.

Best Answer

Do not use eval. It is not needed - it's virtually never needed. Just use the commands themselves without wrapping them inside eval():
% Use a different folder ("D:\matlabfiles\ACTIVITY\Itr 3\Script") than the current working directory.
folder = 'D:\matlabfiles\ACTIVITY\Itr 3\Script' % Specify folder.
baseFileName = sprintf('Batch_%d_Results_%s.mat', i, simtype); % Specify the base file name.
% Construct the full file name.
fullFileName = fullfile(folder, baseFileName);
% Save to a .mat file.
save(fullFileName, 't');