Matlab - Cambiar nombre de variables

 
Vista:

Cambiar nombre de variables

Publicado por Pau (2 intervenciones) el 19/05/2012 18:23:56
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!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Cambiar nombre de variables

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 20/05/2012 02:11:43
Hola.
1
2
3
4
5
6
7
clear all
for i=1:4
text='1m_30_00';
textMedio=num2str(i);
textFinal='.dat';
NOMBREVARIABLE = strcat(text,textMedio,textFinal)
end


1
2
3
4
5
6
7
8
9
10
11
12
13
14
EJECUCION
>> Untitled
 
NOMBREVARIABLE =
1m_30_001.dat
 
NOMBREVARIABLE =
1m_30_002.dat
 
NOMBREVARIABLE =
1m_30_003.dat
 
NOMBREVARIABLE =
1m_30_004.dat



Saludos.
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
programador en matlab
Servicios de programacion matlab
[email protected]

http://matlabcaballero.blogspot.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Cambiar nombre de variables

Publicado por Pau (2 intervenciones) el 20/05/2012 13:08:29
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.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Cambiar nombre de variables

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 20/05/2012 18:48:16
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.


1
2
3
4
5
6
7
8
9
10
11
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)



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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.7431



Saludos.
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
programador en matlab
Servicios de programacion matlab
[email protected]

http://matlabcaballero.blogspot.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Cambiar nombre de variables

Publicado por Andres (8 intervenciones) el 28/10/2013 02:17:25
Estimado Jose

tengo un problema parecido al de PAU. Tengo tres vectores de diferentes tamaños llamados L1, L2, L3 y deseo que el comando "length" entienda que cuando formo la Palabra L1 ó L2 ó L3 me refiero a las variables, pero solo me muestra el tamaño de la cadena de texto que es 2. Estaria muy agradecido si esto tendria alguna solucion. Saludos.

for i=1:3
TI(i)=length(strcat('L',num2str(i)))
end
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Cambiar nombre de variables

Publicado por tory (1 intervención) el 15/04/2015 18:07:54
buenos dias! tengo un problema de llenado de matrices las cuales deberán llenarse desde el teclado y pregunto si desea llenar de nuevo, mi problema consiste en que cada vez que se llena una nueva matriz debe adquirir un nuevo nombre y guardar el anterior con los valores de la matriz anterior, esto para después hacer operaciones con las matrices que se haya creado.
espero y me pueda ayudar
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Cambiar nombre de variables

Publicado por Mario Pérez (1 intervención) el 02/07/2015 16:59:58
Me sirvió de mucho. Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Cambiar nombre de variables

Publicado por Roxan Romo (1 intervención) el 15/06/2017 22:12:23
Muchas gracias, por los ejemplos me sirvio para un proyecto final.
Saludos!!
Roxan Romo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Cambiar nombre de variables

Publicado por Kari (1 intervención) el 04/07/2012 09:46:58
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
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Cambiar nombre de variables

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 04/07/2012 16:10:24
Hola Kari.
Gracias por tu invervención en esta pregunta, en la parte de "d = dir('C:\Users\...\*.txt')", deberias usar la funcion
1
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
1
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
[email protected]

http://matlabcaballero.blogspot.com
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar