Matlab - Creacion de diferentes matrices usando el mismo bucle

   
Vista:

Creacion de diferentes matrices usando el mismo bucle

Publicado por Tamara (4 intervenciones) el 01/12/2011 17:10:27
Hola!
Tengo que generar 191 matrices diferentes, que se generan de la misma manera, pero cada una utiliza diferentes datos.
Lo que me gustaria es poder realizar todas las matrices en un solo bucle, (trend1, trend2,...) para no tener que ir cambiando el numero cada vez que corro el programa, tipo de k=1:191 hallar "trendk",
es esto posible?
Si es asi, me podria explicar alguien como hacerlo?
Muchas gracias!!
Un saludo,
Tamara
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

Creacion de diferentes matrices usando el mismo bucle

Publicado por Jorge (226 intervenciones) el 02/12/2011 00:26:32
Es posible hacerlo, pero tu problema no está definido con claridad.

Una posibilidad es hacer una matriz de matrices.

Si tienes dos matrices 3 x 2

a1 = [
111 121
112 122
113 133]

a2 = [
211 221
212 222
213 233]

Puedes formar otra matriz a partir de ellas, y sus dimensiones serán 3 x 2 x 2
b(:,:,1) = a1
b(:,:,2) = a2

El renglón 1, columna 1, matriz 1 se encuentra así
b(1,1,1)

El renglón 3, columna 2, matriz 2 se encuentra así
b(3,2,2)

El renglón i, columna j, matriz k será
b(i, j, k)

Y eso lo puedes poner en iteraciones.
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

Creacion de diferentes matrices usando el mismo bucle

Publicado por Tamara tamara_aza@hotmail.com (4 intervenciones) el 02/12/2011 09:49:12
Hola Jorge, gracias por contestar. Voy a intentar explicar un poco mejormi problema.
Tengo que hacer un archivo con una serie de datos ,en este caso potencia cada minutos durante un anio, (estoy en un ordenador aleman y no me funcionan ciertas letras)
Tengo 191 casas, y cada una necesita un archivo distinto, podria hacer una sola matriz, pero realmente son matrices muy grandes (ya que solo cada columna tendria 525601 datos) y prefiero que cada casa tengo un archivo distinto. El tema es que cada archivo se genera de una forma similar, pero tomando datos de otros sitios, ejemplo muy simplificado:
casa1(1,:)= potencia1
casa2(1,:)=potencia2
Lo que yo quiero saber es si es posible en lugar de ir casa por casa, que tardo muchisimo, hacer algun bucle o algo tipo
for k=1:191
casak(1,:)=potenciak
he probado con funciones tipo "sprintf", pero no se si aqui sirve de algo, o simplemente no lo he sabido utilizar...
espero haberme explicado mejor
Muchas 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

Creacion de diferentes matrices usando el mismo bucle

Publicado por Jorge (226 intervenciones) el 02/12/2011 11:01:17
De tu primera pregunta a la segunda, ya introdujiste muchas más variables. Tu problema sigue sin quedarme claro.

¿Los datos ya están en archivos ennumerados?
¿Vas a llamar una rutina que los calcula?
¿Quieres formar sólo los nombres de las variables?
¿Cuántas columnas tienen los archivos o cálculos?
¿Hay sólo números o vas a incluir texto?

Todas esas posibilidades que abriste dan lugar a soluciones diferentes...


Si te refieres a generar variables ennumeradas, puedes pensar en la función "num2str", como en este concepto

for k = 1 : 10
['potencia' num2str(k)]
end

Aplícalo como corresponda en tu caso.


Ahora bien, si "potencia1", "potencia2", etc., son archivos que ya están hechos, puedes utilizar un "load", como en este concepto.

for k = 1 : 10
s = ['potencia' num2str(k) '.txt'];
casa(:,:,k) = load (s);
end

Que es solamente una idea, dado que todos los detalles no los conozco.

Lo que mencionas es posible hacerlo con Matlab, sólo que tienes que acotar claramente el problema. Hay mil posibilidades abiertas...
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

Creacion de diferentes matrices usando el mismo bucle

Publicado por Tamara tamara_aza@hotmail.com (4 intervenciones) el 02/12/2011 11:52:19
Perdona, es que me cuesta mucho explicarme bien.
Voy a intentar contarte tal cual lo que tengo que hacer.
tengo 191 archivos de potencias de casas que se llaman HH1, - , HH191
que son archivos de 525601 filas y una columna (vamos, que son grandes)
y quiero hallar 191 archivos con trend1,-,trend191
para hallar estos archivos tengo que compararlos con otro archivo (Cumulative_in)
bueno, el caso es que el programa seria algo tipo
for i=1:525601
if Cumulative_In(i,1)>HH1(i,1)
trend1(i,1)=1
else ...
end
if Cumulative_in(i,1)>HH2(i,1)
trend2(i,1)=1
else
end
,,,,
end
es algo mas complicado, pero es por ver la idea.
lo que quiero es algo tipo
for k=1:191
for i=1:525601
if cumulative_in(i,1)>HHk(i,1)
trendk(i,1)=1
else
...
eso lo podria hacer con la funcion "num2str" y "load"??
muchas 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

Creacion de diferentes matrices usando el mismo bucle

Publicado por Jorge (226 intervenciones) el 02/12/2011 22:17:20
Bueno, pero si vas a comparar archivos, compara la matriz completa con otra matriz completa, no elemento por elemento.

El tamaño de los archivos no importa. Pueden ser chicos o grandes y Matlab los trata exactamente igual.

Mi sugerencia es que diseñes unos archivos chicos creados especialmente para probar tu algoritmo. No trabajes inicialmente con los archivos grandes.

Mira, aquí hay un ejemplo completo y detallado (y sencillo) de cómo leer archivos que son similares en nombres y datos, y que de entrada ya están ennumerados y tienen las mismas dimensiones.

http://matrixlab-examples.com/data-analysis.html

El ejemplo toma archivos 'data1.txt', 'data2.txt', 'data3.txt', etc. Los lee uno por uno. Extrae todos los datos pero luego utiliza sólo los necesarios para procesarlos y generar un archivo de salida.

Supongo que es algo así lo que necesitas (sólo supongo).

Suerte!
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

Creacion de diferentes matrices usando el mismo bucle

Publicado por Tamara tamara_aza@hotmail.com (4 intervenciones) el 03/12/2011 10:44:02
Muchas gracias!! Justo lo que necesitaba!
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 Dave

Creacion de diferentes matrices usando el mismo bucle

Publicado por Dave correa.dave30@gmail.com (934 intervenciones) el 04/12/2011 14:49:18
Hola!!!

Una consulta muy interesante.

Saludos
Dave Correa
Servicios de Programación

correa.dave30@gmail.com
http://fismatlab.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