Jueves 3 de Abril de 2025, 16:37
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación Específica
»
Matlab
»
ASCII, texto etc..
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: ASCII, texto etc.. (Leído 3039 veces)
Estrufi
Miembro MUY activo
Mensajes: 158
ASCII, texto etc..
«
en:
Martes 17 de Febrero de 2009, 13:10 »
0
Hola, He creado una función en Matlab que me crea un fichero con una cabecera y una matriz llena de datos, al final he usado la opción "fprintf" en lugar de "save", ya que estaba mezclando strings de la cabecera, con numeros, enteros, reales, etc...He hecho bien?
Quiero decir, no me aclaro mucho a que nos referimos con formato "ASCII" o que son "ficheros ASCII", los ficheros .txt son ficheros ASCII? La verdad ando un poco perdida, si alguien pudiera aclararme de que va todo eso, seria estupendo.
Muchisimas gracias por todo, saludos!
Tweet
allisap
Miembro MUY activo
Mensajes: 259
Nacionalidad:
Re: ASCII, texto etc..
«
Respuesta #1 en:
Martes 17 de Febrero de 2009, 18:12 »
0
hola...
lo fichero ascii son archivos de texto plano es decir sin formato, y estos los puedes abrir con el bock de notas
Victor Pasilla Campos
Puebla,Pue
fernandezlm
Nuevo Miembro
Mensajes: 4
Re: ASCII, texto etc..
«
Respuesta #2 en:
Martes 17 de Febrero de 2009, 22:28 »
0
Buenas chica!
Esta mañana estuve a punto de responderte pero andaba liada en el trabajo. Veo que intentas hacer lo mismo que yo estoy haciendo. Quieres trabajar con archivos .txt, eso he entendido. Preguntaste si para poner archivos en un txt con una cabecera se puede hacer con la función 'fprintf', de echo es la forma adecuada cuando la parte de cabecera la introduces de forma constante y la parte de .txt es de forma matricial con caracteres.
En Matlab cuando se trabaja con archivos .txt que se desea tratar se debe tener cuidado porque al leerlos generaras lo que se conocen como 'cell arrays'. Este formato es incompatible con la función 'fprintf' por lo que si quieres volver a pegar ese contenido en otro fichero no podras hacerlos a menos que modifiques su formato pasando de 'cell array a 'character array?. Ese paso se puede realizar mediante la función '' que los pega unos a otro. Te voy a poner ejemplos de las dos situaciones, cuando generas un .txt con datos matriciale sy cabecera, y un .txt con 'character arrays'.
PRIMER CASO
matriz=[1 2 3;4 5 6;7 8 9];
B1='prueba';%Esta parte si la ponemos variable podemos generar archivos con nombres variables
Lista=strcat(B1,'.txt');%Marca el nombre del archivo que vamos a crear
D1_1=strcat('c:Archivos de programaMATLAB704work',Lista);%Marca donde se va a guardar el .txt
fid1=fopen(D1_1,'w')% Se abre un archivo txt que ya hemos denominado con anterioridad con al función 'w' de escritura
fprintf(fid1,' %s%[^n]','La matriz que estamos guardando');%Se pueden poner tantos como se deseen, lo que hay entre los dos es el fromato
fprintf(fid1, '%f%f%f n', matriz);
************************************************************
Este programa te guardaria un archivo como .txt con una cabecera 'La matriz que estamos guardando' y de contenido la matriz.
SEGUNDO CASO
EN el caso de tener en lugar de matriz un .txt con datos en columnas o separados por comas se tiene que leer primero el contenido. Esto se ahce mediante la función 'textscan', de donde se generan cell arrays del conido. Este se transforma en 'character array' mediante la función 'char' y por último se pega con la cabecera y el 'character array'.
entrada=input('Dame el archivo .txt de entrada: ','s');%entrada del archivo
fid1=fopen(entrada);%Se abre el archivo
datos=textscan(fid1, '%s%[^n]');%Se lee el archivo, se elige el formato que se desea.
A{1,1}=char(datos{1});%Se define las dos 'character array'
A{1,2}=char(datos{2});
space={' '};
B1=strcat(A{1,1},space,A{1,2});%Se crea una 'character cell' de todos los contenidos
cabecera=char('La cabecera que predice');
B2=strvcat(cabecera,B1);%pegado en vertical de la cabecera y lo del archivo .txt
dlmwrite('prueba.txt', B1);%La salida del archivo nuevo será 'prueba.txt'
***************************************************************************************************
Espero que esto te se ade ayuda si tienes alguna duda más sólo tienes que preguntármelo.
Mucha suerte,
Mercedes
Estrufi
Miembro MUY activo
Mensajes: 158
Re: ASCII, texto etc..
«
Respuesta #3 en:
Miércoles 18 de Febrero de 2009, 10:00 »
0
Hola!
muchisimas gracias por la aclaracion, ...la segunda parte la veo un poco mas liosa. Tengo un par de dudas mas:
1) Para leer cual es mejor, textread, textscan o fscanf?? no me aclaro mucho con la ayuda porque esta en ingles. Ademas ahora creo otro fichero (aparte del fichero de con la cabecera, etc etccc) con solo las matrices, y ese lo guardo con save y lo leo con load, y parece k recupero los datos sin problemas...
2) Hay alguna manera en Matlab de saber si existe un determinado directorio en work y en su caso crearlo simplemente con un mkdir? Lo que necesito es la manera de comprobar que ese directorio existe ó no.
Muchisimas gracias, Saludos!
fernandezlm
Nuevo Miembro
Mensajes: 4
Re: ASCII, texto etc..
«
Respuesta #4 en:
Miércoles 18 de Febrero de 2009, 12:07 »
0
BUenas!
Sobre la 1) Te comento que yo utilizo el textscan siempre que deseo trabajar con los datos. El textread lo uso cuando únicamente los leo y no los quiero manipular. El fscanf nunca lo he utilizado luego que tengo un rato te miro que sale de resultado, pero como en todo si te vale pues adelante.
2) Pues es qe ypo no creo los directorios de forma computacional, sino manualmente. Ásí que no te puedo ser de ayuda.
UN saludo, y luego te hablo del fscanf
Mercedes
Estrufi
Miembro MUY activo
Mensajes: 158
Re: ASCII, texto etc..
«
Respuesta #5 en:
Jueves 19 de Febrero de 2009, 18:09 »
0
ok, Ya lo he conseguido grabando solo la matriz despues de crear el otro fichero, Otra duda, Cual es la mejor manera de usar Quiver cuando tengo una matriz:
matriz =
16.0000 496.0000 -0.0017 0.5740
48.0000 432.0000 0.0505 0.1444
80.0000 400.0000 -0.0059 -0.0614
80.0000 432.0000 -0.0256 -0.0999
80.0000 464.0000 0.0029 0.0196
80.0000 656.0000 -0.0288 0.0356
112.0000 624.0000 0.0747 -0.0265
Donde la primera columna son las "x", la segunda las "y", y la tercera y cuarta los "dx" (desplazamientos en x) y "dy" (desplazamientos en y) respectivamente de una imagen que se representa con una matriz de 736 puntos en la "y" 192 en las "x"?
lo digo por eso de centrarla y esas cosas.
Muchisimas gracias.
allisap
Miembro MUY activo
Mensajes: 259
Nacionalidad:
Re: ASCII, texto etc..
«
Respuesta #6 en:
Domingo 22 de Febrero de 2009, 16:15 »
0
saludos, no he usado quiver
pero si me dices que quieres hacer con los datos , tal vez pueda decirte como puedes acomodar tus datos de la mejor manera
Victor Pasilla Campos
Puebla Pue
Estrufi
Miembro MUY activo
Mensajes: 158
Re: ASCII, texto etc..
«
Respuesta #7 en:
Martes 24 de Febrero de 2009, 10:56 »
0
Buenas!!
Yo tengo esta matriz:
matriz =
16.0000 496.0000 -0.0017 0.5740
48.0000 432.0000 0.0505 0.1444
80.0000 400.0000 -0.0059 -0.0614
80.0000 432.0000 -0.0256 -0.0999
80.0000 464.0000 0.0029 0.0196
80.0000 656.0000 -0.0288 0.0356
112.0000 624.0000 0.0747 -0.0265
Los valores de la coordenada "x" se mueven de 1 a 192 ,y los de la coordenada "y" de 1 a 736, cierto? la tercera columna son los desplazamientos en " x" y la cuarta son los desplazamientos en "y", así que lo que quiero es representar esos desplazamientos como vectores, pero ajustando las coordenadas "x" e "y"... como podría hacer?
Saludos! y muchas gracias!
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación Específica
»
Matlab
»
ASCII, texto etc..