SoloCodigo
Programación Específica => Matlab => Mensaje iniciado por: Richi254 en Miércoles 20 de Mayo de 2009, 14:31
-
Hola amigos, tengo un problema con la lectura de un archivo .txt que contiene unos datos que necesito manejar. El archivo tiene esta forma.
Ejemplo:
Elemento______ Posición X_____ Posición Y________nombre
______A1 _________3500.0________ 2000.0_________100A
______A2 _________7800.0_________1000.0_________250A
______B1__________1000.0_________5000.0________1000B
_______(esto representa espacios en blanco)
Lo que necesitaria seria poder guardar en una matriz o vector en la que cada elemento sea el correspondiente al del archivo, por ejempo que matriz(1,1)= 'Elemento', matriz(2.2)=3500.0, etc.
El problema es que si uso A=importdata('archivo.txt') se guarda de la siguiente forma:
>>A
'Elemento Posición X Posición Y Nombre'
'A1 3500.0 2000.0 100A'
'A2 7800.0 1000.0 250A'
'B1 1000.0 5000.0 1000B'
es decir que si hago:
>>A(1)
'Elemento Posición X Posición Y Nombre'
>>A(2)
'A1 3500.0 2000.0 100A'
Y si uso:
[arch, error]=fopen(archivo.txt,'r')
vector=fscanf(arch,'%c')
fclose(arch)
En vector se me guarda todos los elemento pero 1 a 1, es decir, por ejemplo:
>> vector(7)=
t
>>vector(8)=
o
>>vector(9)=
[]
y así sucesivamente, o sea que tiene en cuenta hasta los espacios en blancos. y si en lugar de usar %c en fscanf uso %d ó %f no lee nada, en ambas opciones el resultado es:
>>vector=
[]
Espero haberlo dejado claro. Si alguién tiene alguna idea de porqué ocurre esto y como lo podría resolver se lo agradecería mucho.
MUCHÍSIMAS GRACIAS DE ANTEMANO.
-
por ejempo que matriz(1,1)= 'Elemento', matriz(2.2)=3500.0, etc.
esto no es posible porque quieres que en una sola matriz esten combinados textos y numeros
una matriz debe ser de numeros o de de cadenas pero no combinados
saludos
Victor Pasilla
-
Ok, gracias por aclararmelo porque me estaba volviendo loco :)
He hecho un pequeño programita en excel para recoger los datos y hago una llamada desde MATLAB de este modo:
winopen(mi_archivo.xls)
[numeros,caracteres]=xlsread(archivo.xls)
De esta forma aunque al final tengo dos matrices y no una, ambas son del mismo tamaño y se guardan las posiciones de cada elemento, cuando te nos referimos a la matriz numeros, las posiciones en las que hay caracteres queda un 0 y al contrario con la de caracteres.
>>caracteres
caracteres=
'nombre' 'posicionX' 'posicionY' 'Valor'
'A1' '__' '__' '__'