Programación Específica > Matlab
Recorrer Un Directorio
waltercordova:
Estimados
Ante todo gracias por leer este mensaje, estoy intentando recorrer un directorio y extraer los nombres de los archivos que estan en el mismo en un array.En otras palabras Si el directorio "G:\TesisGO\NUEVASMATRICES" contiene los archivos
"file1" ,"file2","file3", lo que necesito es extraer esos nombres en un vector
vector=[file1;file2;file3], es posible hacer esto?
muchas gracias
Walter
Quicksilver:
Si, es posible, con la función dir lo permite, trataré de poner un breve ejemplo, en la ayuda de matlab, podrás encontrar mucho acerca de esto.
Supongamos que necesitas extraerel nombre o la cantidad de imágenes que están en una carpeta.
--- Código: Text --- T=dir('*.jpg'); %Guarda todas las imágenes que tengas en esa carpeta en un vector %ejemplo, si fueran archivos .doc T=dir('*.doc');
Ahora, la función dir, cuando la desplegas posee las siguientes propiedades.
0x1 struct array with fields: % Tamaño del vector
name
date
bytes
isdir
datenum
Para guardar los nombres has lo siguiente.
--- Código: Text --- [fi,co]=size(T); %saca las dimensiones del vector, que será un vector de nx1 T.name % Te desplega todo los valores
Nota: Para poder usar bien esta función, te recomiendo, que pases los archivos necesarios a la carpeta de MatLab, normalmente se encuentra en mis documentos, intenta también añadiendo el Path, sin embargo, no he intentado con este último.
Uns saludo, espero haber servido de ayuda, y espero pues, que si llegas a la solución de tu problema, coloques la respuesta, o si cualquier otra ayuda, aca estaremos.
fa61an:
Esta interesante la funcion dir..... excelente explicacion
Quicksilver:
fa61an, gracias pues por el comentario, espero que te haya gustado la explicación que dí de la función "dir" esperemos también que al dueño del post le haya servido.
Para aprender a manejar esta función bien, es bueno jugar con un ella un rato en el command window.
Un saludo...
mardedudas:
HOla
La verdad que la explicación que te dan es bastante buena, solo te falta hacerte con ella, pero rebuscando en Matlab, he encontrado un programita ya hecho que te devuelve todos los arhivos que hay en un directorio; te lo saca en un ventanita muy curioso.
\MATLAB\R2006b\help\techdoc\creating_guis\examples\lbox2.m (lbox2.fig)
esa es la ruta.
Te mando el codigo a ver que te parece.
Espero que te sea de ayuda:
------------------------------------------------------------------------------------------------------
function varargout = lbox2(varargin)
% LBOX2 Application M-file for lbox2.fig
% LBOX2, by itself, creates a new LBOX2 or raises the existing
% singleton*.
%
% H = LBOX2 returns the handle to a new LBOX2 or the handle to
% the existing singleton*.
%
% LBOX2('CALLBACK',hObject,eventData,handles,...) calls the local
% function named CALLBACK in LBOX2.M with the given input arguments.
%
% LBOX2('Property','Value',...) creates a new LBOX2 or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before lbox2_OpeningFunction gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to lbox2_OpeningFcn via varargin.
%
% *See GUI Options - GUI allows only one instance to run (singleton).
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Copyright 2000-2006 The MathWorks, Inc.
% Edit the above text to modify the response to help lbox2
% Last Modified by GUIDE v2.5 24-Aug-2004 10:31:32
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ...
'gui_Singleton', gui_Singleton, ...
'gui_OpeningFcn', @lbox2_OpeningFcn, ...
'gui_OutputFcn', @lbox2_OutputFcn, ...
'gui_LayoutFcn', [], ...
'gui_Callback', []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT
% --- Executes just before lbox2 is made visible.
function lbox2_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to lbox2 (see VARARGIN)
% Choose default command line output for lbox2
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
if nargin == 3,
initial_dir = pwd;
elseif nargin > 4
if strcmpi(varargin{1},'dir')
if exist(varargin{2},'dir')
initial_dir = varargin{2};
else
errordlg('Input argument must be a valid directory','Input Argument Error!')
return
end
else
errordlg('Unrecognized input argument','Input Argument Error!');
return;
end
end
% Populate the listbox
load_listbox(initial_dir,handles)
% Return figure handle as first output argument
% UIWAIT makes lbox2 wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% --- Outputs from this function are returned to the command line.
function varargout = lbox2_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
% ------------------------------------------------------------
% Callback for list box - open .fig with guide, otherwise use open
% ------------------------------------------------------------
function listbox1_Callback(hObject, eventdata, handles)
% hObject handle to listbox1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: contents = get(hObject,'String') returns listbox1 contents as cell array
% contents{get(hObject,'Value')} returns selected item from listbox1
get(handles.figure1,'SelectionType');
if strcmp(get(handles.figure1,'SelectionType'),'open')
index_selected = get(handles.listbox1,'Value');
file_list = get(handles.listbox1,'String');
filename = file_list{index_selected};
if handles.is_dir(handles.sorted_index(index_selected))
cd (filename)
load_listbox(pwd,handles)
else
[path,name,ext,ver] = fileparts(filename);
switch ext
case '.fig'
guide (filename)
otherwise
try
open(filename)
catch
errordlg(lasterr,'File Type Error','modal')
end
end
end
end
% ------------------------------------------------------------
% Read the current directory and sort the names
% ------------------------------------------------------------
function load_listbox(dir_path,handles)
cd (dir_path)
dir_struct = dir(dir_path);
[sorted_names,sorted_index] = sortrows({dir_struct.name}');
handles.file_names = sorted_names;
handles.is_dir = [dir_struct.isdir];
handles.sorted_index = sorted_index;
guidata(handles.figure1,handles)
set(handles.listbox1,'String',handles.file_names,...
'Value',1)
set(handles.text1,'String',pwd)
% --- Executes during object creation, after setting all properties.
function listbox1_CreateFcn(hObject, eventdata, handles)
% hObject handle to listbox1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: listbox controls usually have a white background, change
% 'usewhitebg' to 0 to use default. See ISPC and COMPUTER.
usewhitebg = 1;
if usewhitebg
set(hObject,'BackgroundColor','white');
else
set(hObject,'BackgroundColor',get(0,'defaultUicontrolBackgroundColor'));
end
% --- Executes during object creation, after setting all properties.
function figure1_CreateFcn(hObject, eventdata, handles)
% hObject handle to figure1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Add the current directory to the path, as the pwd might change thru' the
% gui. Remove the directory from the path when gui is closed
% (See figure1_DeleteFcn)
setappdata(hObject, 'StartPath', pwd);
addpath(pwd);
% --- Executes during object deletion, before destroying properties.
function figure1_DeleteFcn(hObject, eventdata, handles)
% hObject handle to figure1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Remove the directory added to the path in the figure1_CreateFcn.
if isappdata(hObject, 'StartPath')
rmpath(getappdata(hObject, 'StartPath'));
end
--------------------------------------------------------------------------------------------------
Suerte
Te mando los 2 archivitos comprimidos listadoDirectorio.rar
Navegación
[#] Página Siguiente
Ir a la versión completa