Borrar filtros
Borrar filtros

Error in UIgetfile

1 visualización (últimos 30 días)
Karthik KJ
Karthik KJ el 28 de Abr. de 2012
Hi,
How to load multiple mat files into the workspace , I tried this but working only for single mat file.
[FileName,PathName] = uigetfile('*.mat','Select mat file','MultiSelect','on');
NAME = [PathName,FileName];
evalin('base',['load ' NAME]);

Respuestas (2)

Walter Roberson
Walter Roberson el 28 de Abr. de 2012
uigetfile() returns a cell array of strings when MultiSelect is on.
It is not possible to request to load multiple files in a single load() statement. You will have to loop.
Loading a mat file into a workspace the way you are doing is not recommended, as the files might happen to contain variable names that interfere with something else you are doing.
  2 comentarios
Karthik KJ
Karthik KJ el 19 de Mayo de 2012
do you say to load it as guidata?
Walter Roberson
Walter Roberson el 20 de Mayo de 2012
Use the function form of load() to return a structure that contains all the loaded variables as fields. If you must write the results into the base workspace for some reason, then write the entire structure as a unit.
Assume that the user is going to be malicious and deliberately ask to load a .mat file that has a variable name the same name as some important existing variable.

Iniciar sesión para comentar.


Jan
Jan el 19 de Mayo de 2012
[FileName, PathName] = uigetfile('*.mat','Select mat file','MultiSelect','on');
if ~isequal(FileName, 0)
FileName = cellstr(FileName); % Care for a single selection
for iFile = 1:numel(FileName)
evalin('base', ['load ', fullfile(PathName, FileName{iFile}]);
end
end
I do not like evalin, because it impedes debugging and poofing variables to another workspace slows down Matlab. The JIT acceleration cannot recognize the existence or type of a variable when they are injected from a subfunction using evalin. It would be better to forward the loaded data structs as outputs.

Community Treasure Hunt

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

Start Hunting!

Translated by