Matlab - Cambiar nombre de variables
Hola a todos, Tengo que abrir 50 archivos en matlab que contienen matrices, y quiero abrirlos en un bulce for para no tener que utilizar 50 veces el comando "load", ya que el código se extendería mucho. Los archivos se laman igual, lo que pasa es que cambia el número al final. Sí que sé abrirlos mediante el bucle, sería de la siguiente manera: for i=1:50; text='1m_30_00'; textMedio='i'; textFinal='.dat'; NOMBREVARIABLE = strcat(text,textMedio,textFinal); end el problema es que no sé cómo hacer para que cambie el nombre de la variable cada vez y así no se me machaque en la misma variable. Podría hacer un strcat también?? Muchas gracias! También te puede interesar...
Hola. clear all
for i=1:4
text='1m_30_00';
textMedio=num2str(i);
textFinal='.dat';
NOMBREVARIABLE = strcat(text,textMedio,textFinal)
endEJECUCION
>> Untitled
NOMBREVARIABLE =
1m_30_001.dat
NOMBREVARIABLE =
1m_30_002.dat
NOMBREVARIABLE =
1m_30_003.dat
NOMBREVARIABLE =
1m_30_004.datSaludos. JOSE JEREMIAS CABALLERO Asesor de Proyectos con Matlab programador en matlab Servicios de programacion matlab jjcc94@hotmail.com http://matlabcaballero.blogspot.com
Muchas gracias Jose por la ayuda el problema que veo en la ejecución es que todas las variables se llaman de la misma manera, entonces al hacer el load solamente me cargaría el último fichero. Si pusiese el load dentro del bucle for, supongo que sí que cargaría todos los ficheros, pero se llamarían todos de la misma forma.
Hola Paul. Yo solo te habia filtrado tu codigo, nada mas. Pero tu pregunta se puede hacer de varias maneras. Aqui tiene dos maneras de hacerlo. clear all
for i=1:2
% 1RA FORMA
matriz=load(strcat('1m_30_00',num2str(i),'.dat'));
v=genvarname(['M',num2str(i)]);
eval([v, '=matriz']);
% 2DA FORMA
a(:,:,i)= load(strcat('1m_30_00',num2str(i),'.dat'));
end
display(a)EJECUCION
>> cambiar_variables1
M1 =
0.9649 0.9572 0.1419
0.1576 0.4854 0.4218
0.9706 0.8003 0.9157
M2 =
0.7922 0.0357 0.6787
0.9595 0.8491 0.7577
0.6557 0.9340 0.7431
a(:,:,1) =
0.9649 0.9572 0.1419
0.1576 0.4854 0.4218
0.9706 0.8003 0.9157
a(:,:,2) =
0.7922 0.0357 0.6787
0.9595 0.8491 0.7577
0.6557 0.9340 0.7431Saludos. JOSE JEREMIAS CABALLERO Asesor de Proyectos con Matlab programador en matlab Servicios de programacion matlab jjcc94@hotmail.com http://matlabcaballero.blogspot.com
Para futuras referencias... para cualquier tipo de archivo de datos se puede usar lo siguiente: clear all, close all, clc d = dir('C:\Users\...\*.txt') % Entre comillas simples debe ir la dirección de donde se % encuentren los archivos que quieres procesar. *.txt puede ser cambiado % por cualquier otro tipo de archivo que sea legible para cargar a Matlab N = length(d); Datos= cell(1,N); % Se define antes para disminuir el tiempo de ejecución del bucle for for k=1:N fname=d(k).name; Datos{k}=load(fname); end % Como verán en la variable Datos se cargan todos los archivos encontrados en el directorio, usando Datos{i} donde i = 1:N, pueden acceder a cualquiera de esos datos y procesarlos de forma distinta fuera del bucle anterior
Hola Kari. Gracias por tu invervención en esta pregunta, en la parte de "d = dir('C:\Users\...\*.txt')", deberias usar la funcion uigetfile, eso te va a permitir acceder a cualquier lugar de la pc y y poder cargar todo los datos que desees y adeamas de cualquier extension.Ademas podrias usar la funcion uigetfile, dir y ls y tendras acceso a los nombre de los archivos.Saludos. JOSE JEREMIAS CABALLERO Asesor de Proyectos con Matlab programador en matlab Servicios de programacion matlab jjcc94@hotmail.com http://matlabcaballero.blogspot.com Borrar plot boris alonso |