Matlab - importar datos .txt

   
Vista:

importar datos .txt

Publicado por juan (8 intervenciones) el 25/02/2013 17:37:56
cordial saludo

tengo el siguiente archivo .txt

KARD 4 4 5 5 7 7
KARG 1 4 2 5 3 6
KBEG 3 9 3 9 3 9
KEND 8 14 8 14 8 14
KTEX 1 1 1 1 1 1
/BRANCH
$UNITS, 0.0, 0.0
$VINTAGE, 1
1IN___AOUT__A 1.00321460E-01 9.60945328E-01 4.21955075E-03
2IN___BOUT__B 2.28855894E-02 6.43030128E-01 -1.44866182E-03
----------------------- 5.30754536E-01 9.37098860E-01 3.83029000E-03
3IN___COUT__C 2.28791096E-02 6.36621947E-01 -1.37483340E-03
----------------------- 2.28855894E-02 6.43030128E-01 -1.22205688E-03
------------------------- 5.30741578E-01 9.37136895E-01 3.77456975E-03
$VINTAGE, -1,
$UNITS, -1., -1.,
$EOF
ARG, IN___A, IN___B, IN___C, OUT__A, OUT__B, OUT__C



Y necesito leer solamente los datos que estan de la fila 9 hasta la fila 14 y luego poder multiplicar cada valor por un numero cualquiera , estoy leyendo todo el archivo con fgetl pero lo que no se es tomar esos valores en especial gracias de ante mano por la ayuda prestada.

nota: las lineas punteadas no van alli solo era para visualizar bien la matriz 6X3 que conforman los valores numerico
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

importar datos .txt

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3441 intervenciones) el 26/02/2013 14:23:03
1. Toda las filas tienen caractres tipo string.
entonces eso de multiplicar si funciona pero estarias mulitplicando un string.
o ¿ quieres extrar los numero de las filas que mencionas y luego multiplicar?

2. Haber enviame el archivo texto a mi correo para verlo y pones tus avances al foro para ver tu avance y ver en que parte se tiene que modificar.

3. ¿El archivo que mencionas es unico, o quieres usarlo para varios archivos texto el codigo que estas haciendo?


Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
jjcc94@hotmail.com

http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1368762-COMO__HACER_SUS_PREGUNTAS_DE_MATLAB.html
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

importar datos .txt

Publicado por Dave correa.dave30@gmail.com (934 intervenciones) el 26/02/2013 21:27:10
Hola Juan;

Respecto a los datos que deseas leer, hasta donde recuerdo ese formato es producto de una salida de un modelo de línea de transmisión (ATP) y tienen la siguiente estructura:

KARD 3 3 4 4 5 5
KARG 1 4 2 5 3 6
KBEG 3 9 3 9 3 9
KEND 8 14 8 14 8 14
KTEX 1 1 1 1 1 1
/BRANCH
$UNITS, 0.0, 0.0
$VINTAGE, 1
-1IN___AOUT__A 3.64219E-01 7.82535E+02 2.12364E+05-1.00000E+02 1 3
-2IN___BOUT__B 7.25364E-02 4.32512E+02 2.91389E+05-1.00000E+02 1 3
-3IN___COUT__C 7.17897E-02 3.81826E+02 2.93912E+05-1.00000E+02 1 3
$VINTAGE, 0
$UNITS, -1., -1.,
$EOF
ARG, IN___A, IN___B, IN___C, OUT__A, OUT__B, OUT__C

En mi caso las filas 9 a 11, representa a información de la Resistencia de Pérdidas,
Impedancia Característica y Velocidad de Propagación, me imagino que deseas obtener cada uno de esos parámetros para incluirlos posteriormente en las formulas de Zc,....

Sobre tu consulta, si es posible leer únicamente los valores, podrías usar como referencia "IN___AOUT__A", "IN___AOUT__B", "IN___AOUT__C" para iniciar la lectura de los valores.

Espero que sea de alguna ayuda.

Saludos
Dave Correa
correa.dave30@gmail.com
Servicios de Programación Matlab
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

importar datos .txt

Publicado por juan (8 intervenciones) el 26/02/2013 22:45:44
hola que tal deave correa si este un archivo de ATPdraw el cual se da al correr una linea LCC la plantilla que se genera en el atp la estoy modelando en matlab pero aun no se como extraer esos valores del archivo .txt

clear all
clc
fid = fopen('C:\Users\user\Documents\JUAN\juan utp\programa matlab-atp\ST803.LIB');
%[lcc1] = textscan(fid,'%s %s ');
%lcc1{:}
while 1
tline = fgetl(fid);
if strfind(tline,' 1IN___AOUT__A')
disp(tline)
end
if ~ischar(tline), break, end
end


este es parte del codigo que llevo esta tomando los valores de la primera fila pero no se como leer los otros ya que no tienen un titulo en si para identicar. la idea es leer primero los datos y luego multiplicarlos.

3. el codigo sera para varios archivos texto
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

importar datos .txt

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3441 intervenciones) el 27/02/2013 00:03:26
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
30
31
32
33
34
35
36
37
38
39
40
>> importandodatostexto19
 
Matriz{1} =
 
 1IN___AOUT__A              1.00321460E-01  9.60945328E-01  4.21955075E-03
 
 
Matriz{2} =
 
 2IN___BOUT__B              2.28855894E-02  6.43030128E-01 -1.44866182E-03
 
 
Matriz{3} =
 
                            5.30754536E-01  9.37098860E-01  3.83029000E-03
 
 
Matriz{4} =
 
 3IN___COUT__C              2.28791096E-02  6.36621947E-01 -1.37483340E-03
 
 
Matriz{5} =
 
                            2.28855894E-02  6.43030128E-01 -1.22205688E-03
 
 
Matriz{6} =
 
                            5.30741578E-01  9.37136895E-01  3.77456975E-03
 
 
b =
 
1.00321460E-01  9.60945328E-01  4.21955075E-03
2.28855894E-02  6.43030128E-01 -1.44866182E-03
5.30754536E-01  9.37098860E-01  3.83029000E-03
2.28791096E-02  6.36621947E-01 -1.37483340E-03
2.28855894E-02  6.43030128E-01 -1.22205688E-03
5.30741578E-01  9.37136895E-01  3.77456975E-03



Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
jjcc94@hotmail.com

http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1368762-COMO__HACER_SUS_PREGUNTAS_DE_MATLAB.html
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

importar datos .txt

Publicado por juan (8 intervenciones) el 27/02/2013 02:10:41
disculpe jose jeremias caballero entendi poco lo que me envio podria por favor explicarme como realizo la programación o si tomo parte de lo que yo programe 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
Imágen de perfil de Dave

importar datos .txt

Publicado por Dave correa.dave30@gmail.com (934 intervenciones) el 27/02/2013 04:14:49
Hola Juan;

Respecto al programa que debes utilizar para leer tus datos, te adjunto un script que te será de utilidad.

Asumiendo que tus datos son los siguientes y se encuentran en almacenados en un archivo llamado "datos.txt"

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
KARD 4 4 5 5 7 7
KARG 1 4 2 5 3 6
KBEG 3 9 3 9 3 9
KEND 8 14 8 14 8 14
KTEX 1 1 1 1 1 1
/BRANCH
$UNITS, 0.0, 0.0
$VINTAGE, 1
1IN___AOUT__A 1.00321460E-01 9.60945328E-01 4.21955075E-03
2IN___BOUT__B 2.28855894E-02 6.43030128E-01 -1.44866182E-03
.             5.30754536E-01 9.37098860E-01 3.83029000E-03
3IN___COUT__C 2.28791096E-02 6.36621947E-01 -1.37483340E-03
.             2.28855894E-02 6.43030128E-01 -1.22205688E-03
.             5.30741578E-01 9.37136895E-01 3.77456975E-03
$VINTAGE, -1,
$UNITS, -1., -1.,
$EOF
ARG, IN___A, IN___B, IN___C, OUT__A, OUT__B, OUT__C


El script es el siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
clear all,clc
 
fid=fopen('datos.txt','r');
n=1;
while 1
tline = fgetl(fid);
 
if and(n>=9,n<=14)
 
A=textscan(tline,'%s %f %f %f ');
celldisp(A)
end
n=n+1;
if ~ischar(tline), break, end
end
fclose(fid);


El resultado es:

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
A{1}{1} =
1IN___AOUT__A
 
 
A{2} =
    0.1003
 
 
 
A{3} =
   0.9609
 
 
 
A{4} =
    0.0042
 
A{1}{1} =
2IN___BOUT__B
 
A{2} =
    0.0229
 
A{3} =
    0.6430
 
A{4} =
   -0.0014
 
 
A{1}{1} =
 
 
A{2} =
    0.5308
 
A{3} =
    0.9371
 
 
A{4} =
     0.0038
 
 
A{1}{1} =
 3IN___COUT__C
 
 A{2} =
    0.0229
 
 A{3} =
    0.6366
 
 A{4} =
   -0.0014
 
 A{1}{1} =
 
 
A{2} =
    0.0229
 
A{3} =
    0.6430
 
A{4} =
   -0.0012
 
 
A{1}{1} =
 
 
A{2} =
    0.5307
 
A{3} =
    0.9371
 
A{4} =
    0.0038



Espero que sea de alguna ayuda.

Saludos
Dave Correa
correa.dave30@gmail.com
Servicios de Programación Matlab
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
Imágen de perfil de JOSE JEREMIAS CABALLERO

importar datos .txt

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3441 intervenciones) el 27/02/2013 04:25:49
No podia subir, ya hace buen rato no podia entrar al webdelprogramador.
alli te subo. He hecho de varias maneras.

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
clear,
k=1; n=0; m=0;
fid=fopen('importandodatostexto191.txt');
bol=1; bol1=2;
Bol=1; Bol1=2;
i=1;
while 1
         linea=fgetl(fid);
         if ~ischar(linea),
             break;
         end
 
         %% 1RA FORMA DE HACERLO
         if bol==1
             if strfind(linea,'1IN___AOUT__A')
                 bol=0;
             end
         end
 
         if bol==0 && bol1==2
            if strfind(linea,'$VINTAGE, -1')
               bol1=0;
               continue
            end
            n=n+1;
            Matriz1{n}=linea;
            AA{n}=textscan(linea,'%*s %f%f%f');
         end
          %% FIN DE LA 1RA FORMA
 
 
 
         %% 2DA FORMA DE HACERLO
         if i>=9 && i<=14
             Matriz2{k}=linea;
             k=k+1;
         end
         i=i+1;
         %% FIN DE LA 2DA FORMA      
 
          %% 3RA FORMA DE HACERLO
         if Bol==1
             if strfind(linea,'1IN___AOUT__A')
                 Bol=0;
             end
         end
 
         if Bol==0 && Bol1==2
            if strfind(linea,'$VINTAGE, -1')
               Bol1=0;
               continue
            end
            m=m+1;
             if m==1 ||  m==2 || m==4
               AA{m}=textscan(linea,'%*s %f%f%f');
             elseif  m==3 ||  m==5 || m==6
               AA{m}=textscan(linea,' %f%f%f');
             end
 
 
         end
      %% FIN DE LA 3RA FORMA
 
end
fclose(fid);
 
celldisp(Matriz1)
celldisp(Matriz2)
for i=1:size(Matriz2,2)
  a(i,:)=strfind(Matriz2{i},'.');
  b1{i}=Matriz1{i}(a(i)-1:end);
  b2{i}=Matriz2{i}(a(i)-1:end);
  b3(i,:)=cell2mat(AA{i});
end
b1=str2mat(b1)
b2=str2mat(b2)
display(b3)


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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
EJECUCION
>> importandodatostexto19
 
Matriz1{1} =
 
 1IN___AOUT__A              1.00321460E-01  9.60945328E-01  4.21955075E-03
 
 
Matriz1{2} =
 
 2IN___BOUT__B              2.28855894E-02  6.43030128E-01 -1.44866182E-03
 
 
Matriz1{3} =
 
                            5.30754536E-01  9.37098860E-01  3.83029000E-03
 
 
Matriz1{4} =
 
 3IN___COUT__C              2.28791096E-02  6.36621947E-01 -1.37483340E-03
 
 
Matriz1{5} =
 
                            2.28855894E-02  6.43030128E-01 -1.22205688E-03
 
 
Matriz1{6} =
 
                            5.30741578E-01  9.37136895E-01  3.77456975E-03
 
 
Matriz2{1} =
 
 1IN___AOUT__A              1.00321460E-01  9.60945328E-01  4.21955075E-03
 
 
Matriz2{2} =
 
 2IN___BOUT__B              2.28855894E-02  6.43030128E-01 -1.44866182E-03
 
 
Matriz2{3} =
 
                            5.30754536E-01  9.37098860E-01  3.83029000E-03
 
 
Matriz2{4} =
 
 3IN___COUT__C              2.28791096E-02  6.36621947E-01 -1.37483340E-03
 
 
Matriz2{5} =
 
                            2.28855894E-02  6.43030128E-01 -1.22205688E-03
 
 
Matriz2{6} =
 
                            5.30741578E-01  9.37136895E-01  3.77456975E-03
 
 
b1 =
 
1.00321460E-01  9.60945328E-01  4.21955075E-03
2.28855894E-02  6.43030128E-01 -1.44866182E-03
5.30754536E-01  9.37098860E-01  3.83029000E-03
2.28791096E-02  6.36621947E-01 -1.37483340E-03
2.28855894E-02  6.43030128E-01 -1.22205688E-03
5.30741578E-01  9.37136895E-01  3.77456975E-03
 
 
b2 =
 
1.00321460E-01  9.60945328E-01  4.21955075E-03
2.28855894E-02  6.43030128E-01 -1.44866182E-03
5.30754536E-01  9.37098860E-01  3.83029000E-03
2.28791096E-02  6.36621947E-01 -1.37483340E-03
2.28855894E-02  6.43030128E-01 -1.22205688E-03
5.30741578E-01  9.37136895E-01  3.77456975E-03
 
 
b3 =
 
    0.1003    0.9609    0.0042
    0.0229    0.6430   -0.0014
    0.5308    0.9371    0.0038
    0.0229    0.6366   -0.0014
    0.0229    0.6430   -0.0012
    0.5307    0.9371    0.0038







Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
jjcc94@hotmail.com

http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1368762-COMO__HACER_SUS_PREGUNTAS_DE_MATLAB.html
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

importar datos .txt

Publicado por Dave correa.dave30@gmail.com (934 intervenciones) el 27/02/2013 04:31:27
Hola Juan;

Como veras existen diversas formas de resolver un problema, al final nadie es dueño de la verdad o de la solución única.

Espero que mi aporte se ayuda, cualquier cosa estamos en contacto, te dejo mis datos personales

Saludos
Dave Correa
correa.dave30@gmail.com
Servicios de Programación Matlab
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

importar datos .txt

Publicado por juan (8 intervenciones) el 27/02/2013 05:03:52
muchas gracias jose jeremias vere el codigo gracias por su ayuda ,gracias dave y si lo se la realización de un programa nunca sera el mismo pero la verdad llevo semanas intentando leer archivos .txt y no he podido y solo me falta esto para terminar.
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

importar datos .txt

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3441 intervenciones) el 27/02/2013 05:15:23
Hola Juan.

Como te daras cuenta, para hacer un codigo de acuerdo al pedido usuario con respecto a la importacion de datos desde un arachivo de texto a matlab, muchas veces es necesario ver el archivo uno mismo, y hacer el codigo apropiado, y una manera de hacerlo, es viendo el archivo de texto personalmente.

Me enviastes tu archivo de texto a mi correo y te respondi con mayor exactitud a lo que querias hacer, pero muchos usuarios a los cuales yo les pido sus archivos de texto y no envian a mi correo, simplemente no se puede ayudar con exactitud en sus preguntas de importacion de textos a matlab.


Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
jjcc94@hotmail.com

http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1368762-COMO__HACER_SUS_PREGUNTAS_DE_MATLAB.html
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

importar datos .txt

Publicado por juan (8 intervenciones) el 28/02/2013 16:57:40
bueno dias jose jeremias gracias a su ayuda he podido resolver gran parte de mi problema, pero ahora tengo un pequeño inconveniente ya la importación de archivos .txt no es mi fuerte, en el archivo txt que le envie puede aparece este símbolo { en una linea especifica, entonces quiero saber como puede hacer para identificar si el el archivo .txt aparece ese símbolo, porque con ello quiero determinar el desarrollo de una condición if. gracias de ante mano
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

importar datos .txt

Publicado por juan (8 intervenciones) el 28/02/2013 17:45:09
bueno logre hacer solo esto

c=('$UNITS, -1., -1., { Restore values that existed b4 preceding $UNITS')
x=findstr(c,'{')

que identifica si ese símbolo esta allí , pero no se como identificar en todo el archivo txt esta esto:

{ Restore values that existed b4 preceding $UNITS') porque no en todos los archivos .txt que tengo no esta todo ese texto solo aparece .
c=('$UNITS, -1., -1.,
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