Matlab - Pasar datos de un txt de columna a filas

 
Vista:

Pasar datos de un txt de columna a filas

Publicado por holyo (58 intervenciones) el 02/03/2010 00:04:18
Hola a todos, os quiero comentar una duda, resulta que para obtener un perfil aerodinámico utilizo un programa que se llama "NACA 4 DIGIT AIRFOL GENERATOR", lo podéis encontrar en esta página,
http://www.mathworks.com/matlabcentral/fileexchange/19915-naca-4-digit-airfoil-generator

Si os lo descargáis, se puede observar que termina de esta manera:
af.xU=af.x(indx1); % Upper Surface x
af.zU=af.z(indx1); % Upper Surface z
af.xL=af.x(indx2); % Lower Surface x
af.zL=af.z(indx2); % Lower Surface z

af.xC=xc;
af.zC=zc;

lecirFactor=0.8;
af.rLE=0.5*(a0*t/0.2)^2;

le_offs=0.5/100;
dyc_dx_le=(m/p^2)*( 2*p-2*le_offs );
theta_le=atan(dyc_dx_le);
af.xLEcenter=af.rLE*cos(theta_le);
af.yLEcenter=af.rLE*sin(theta_le);

% [[Writing iaf data into file------------------------------------------]]
if iaf.wantFile==1
F1=iaf.header;
F2=num2str([af.x af.z]);
F=strvcat(F1,F2);
fileName=[iaf.datFilePath 'naca' iaf.designation '.dat'];
dlmwrite(fileName,F,'delimiter','')
end


El resultado que se quiere es af.x y af.y, son las coordenadas de los puntos que queremos. Como podéis observar se genera un archivo .dat.

El problema es el siguiente, en el archivo .dat, todos las coordenadas x aparecen en una fila, y las coordenadas y en otra, yo quería que apareciesen en formato columna para poder copiarlos y pegarlos en un excel. ¿Se os ocurre alguna idea?

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

RE:Pasar datos de un txt de columna a filas

Publicado por ramiro (54 intervenciones) el 02/03/2010 07:46:46
No sé si esté entendiendo lo que quieres hacer, pero al copiar y ejecutar el programa tst_nacagen obtuve la gráfica del perfil y al teclear a.x y a.z obtuve los datos en forma de columnas separadas, después de eso las copié y pegué al excel sin ninguna dificultad,. si quisieras convertirlos a una sola matriz con dos columnas te sugiero tabla=[a.x a.z] y si quieres que sea una matriz de dos renglones tablahor=tabla'.
Ramiro
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

RE:Pasar datos de un txt de columna a filas

Publicado por holyo (58 intervenciones) el 02/03/2010 15:03:14
Tienes toda la razón, no sé porque no me funcionaba pero ahora sí. El único problema es que quiero que se generen 2000 puntos, y en la tabla que me dices tu que copiaste facilmente sólo llega hasta 256. Lo que hice fue crear lo de tabla= [af.x af.z] y copiar el resultado a excel, pero el problema es que considera todo una misma columna, y no me la divide en dos como a mí me gustaría.

Muchas gracias por tu ayuda Ramiro.
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

RE:Pasar datos de un txt de columna a filas

Publicado por ramiro (54 intervenciones) el 02/03/2010 19:51:46
Bueno, lo que hice para separarlo en dos columnas fue copiar y pegar la matriz tabla en el excel eligiendo previamente el tamaño de la matriz que vas a pasar desde matlab, la separación se hace en la opción data->text to columns->Fixed width->...->Finish.
No creo que sea esta la manera más elegante de interactuar entre excel y matlab, pero me consta que funciona.
Ramiro
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

RE:Pasar datos de un txt de columna a filas

Publicado por ramiro (54 intervenciones) el 03/03/2010 00:03:49
Enocntré otra forma sencilla de pasar las matrices de matlab a excel, aprovechando la estructura vectorial matricial de los resultados y el hecho de que las variables se guardan automáticamente en el "workspace" sólo hay que desplegar este y localizar la variable que hemos definido, es nuestro caso la que se llama tabla, una vez hecha la identificación sólo hay que dar dos clicks sobre la misma y se abre editor de "arrays" con el formato similar a excel, en el cual hay que seleccionar y copiar los datos para después pasarlos directo a una tabla del mismo tamaño, creada previamente en excel.
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

RE:Pasar datos de un txt de columna a filas

Publicado por holyo (58 intervenciones) el 03/03/2010 22:53:44
Hola Ramiro, no se porqué, pero no encuentro en el workspace mi variable, solo me aparece af e iaf. Seguiré intetando buscar.

Un saludo.
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

RE:Pasar datos de un txt de columna a filas

Publicado por ramiro (54 intervenciones) el 04/03/2010 06:27:03
Ahorita mismo acabo de revisar los pasos y en cuanto declaras cualquier variable en la ventana de comandos esta se guarda en el workspace, puedes ver esta sincronización entre las ventanas si escoges la opción view->desktop layout->Five Panel.
Recuerda que debes definir la matriz tabla=[af.x, af.z,] que en el ejemplo tiene tamaño 61x2, pero que en principio puede ser de cualquier otro tamaño, dentro de los límites de almacenamiemto de matlab.
Saludos
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

RE:Pasar datos de un txt de columna a filas

Publicado por holyo (58 intervenciones) el 04/03/2010 16:03:26
Hola Ramiro, muchas gracias, todo ha salido a la perfección. Tengo una última consulta para rizar más el rizo (si es que se puede).

¿Se puede hacer que después de cada número que obtenemos venga siempre la sentencia "mm"? Es decir, obtener una tabla de esta manera:

2mm 3mm 0mm
1mm 1mm 0mm

Creo que ya me entiendes, ¿es posible?

Muchas gracias, sin ti no podría hacer nada de nada.
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

RE:Pasar datos de un txt de columna a filas

Publicado por holyo (58 intervenciones) el 05/03/2010 00:37:31
El problema de los mm lo he solucionado con excel. Mira, me he fijado en un error de transmisión de datos al copiar la tabla de números desde al matlab hacia excel.

En matlab tengo número por ejemplo: 1.23e-17, y excel me lo lee de esta manera: 1.23E+17.

El error es enorme porqe pasamos de décimas a......no cuantos billones. He intentado cambiar el formato de la tabla en el array editor para que me aparezcan todos los decimales 0.0000000000017 (sin lo del e), pero no me lo cambia, ¿qué puedo hacer?

Muchas gracias otra vez.
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

RE:Pasar datos de un txt de columna a filas

Publicado por ramiro (54 intervenciones) el 05/03/2010 17:38:28
Pues mira, he trabajado los datos del prograna nuevamente siguiendo la secuancia:
>>tst_naca4gen
>>tabla=[af.x,af.z]
>>tabla1=[af.xU,af.zU]
>>tabla2=[af.xL,af.zL]
Y automáticamente se guardaron las variables en el workspace con el formato que tenían en matlab, después las seleccioné y copié desde el "array editor", que se activa dando doble click sobre la variable de interés, fianlmente las pasé a excel, abriendo previamente un archivo de excel y tomando la opción paste seleccionando previamente el espacio justo para que quepan los datos.
Bueno, te confieso que lo único que agregué fue hacer la grafica en excel, a menara de comprobación, ordenando antes los datos a graficar.
Saludos
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

RE:Pasar datos de un txt de columna a filas

Publicado por holyo (58 intervenciones) el 09/03/2010 17:57:36
Hola Ramiro, sigo teniendo el problema que te había comentado. En matlab tengo números con esta notación: 3.96 e-6 y al pasarlo a excel se me convierte en 3.96 e+6. Se cambia el menos por el más, ¿tú sabes cómo solucionarlo?

Muchas gracias por tu ayuda.
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

RE:Pasar datos de un txt de columna a filas

Publicado por holyo (58 intervenciones) el 11/03/2010 17:40:08
Hola Ramiro, supongo que al final tampoco has podido responder a este enigma, nada, me resignaré y cambiaré todos los datos a mano.

Un saludo.
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

RE:Pasar datos de un txt de columna a filas

Publicado por ramiro (54 intervenciones) el 15/03/2010 18:21:38
Holyo:
Disculpa que no te haya contestado, lo que pasó fue que anduve muy ocupado con otras ondas del trabajo, si aún te sirve mandame los datos que generan el problema para ver si tiene algo que ver con el tamaño de los mismos o con la versión de matlab que estás utilizando.
Saludos
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