Matlab - Problemas importando datos numéricos de un archivo .txt

 
Vista:

Problemas importando datos numéricos de un archivo .txt

Publicado por Lorena (37 intervenciones) el 01/06/2011 15:18:54
Hola a todos!

Necesito ayuda con lo siguiente: tengo una matriz de datos de dimensión nx3 en un archivo .txt y quiero importarlo a matlab. Pero los datos están con coma como separador decimal, entonces cuando importo la información me toma como dos números separados los valores antes y después de la coma, por lo que me crea una matriz de dimensión nx6.

¿Cómo puedo solucionar esto?

Gracias de antemano por cualquier solución que me puedan sugerir!

Lorena
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
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Problemas importando datos numéricos de un archivo .txt

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 01/06/2011 19:55:49
Hola Lorena.
Al parecer se tiene que hacer un pequeño programa.
para que cambie la coma por punto decimal.
Lo he hecho de tres maneras, ya tu decides cual tomar.
primera te copio un archivo de texto como tu tienes.

Este archivo de texto lo he guaradado con el nombre data1.txt

1,3377 1,7552 1,6948
0,8992 1,4102 2,0844
1,8390 1,8213 1,4981
1,5477 2,0468 2,0359
1,8113 0,8322 0,5819
1,3377 1,7552 1,6948
0,8992 1,4102 2,0844
1,8390 1,8213 1,4981
1,5477 2,0468 2,0359
1,8113 0,8322 0,5819
1,3377 1,7552 12,694
200,8992 1,4102 2,0844
1,8390 1,8213 1,4981
1,5477 2,0468 2,0359
1,8113 0,8322 0,5819

Aqui tienes varias maneras de hacerlo.

%PRIMERA FORMA
%========================================
clear
clc
m=importdata('data1.txt');
[f,c]=size(m);
M=importdata('data1.txt', ' ',f);
B=zeros(f,3);
[n,m]=size(M);
for i=1:n
A=M{i};
for j=1:length(A)
if A(j)==','
A(j)='.';
end
end
B(i,:)=str2num(A);
end
M=B;
display(M)
%===================================

%SEGUNDA FORMA
%=====================================
clear
m=importdata('data1.txt');
[f,c]=size(m);
M=importdata('data1.txt',' ',f);
B=zeros(f,3);
[n,m]=size(M);
for i=1:n
for j=1:length(M{i})
if M{i}(j)==','
M{i}(j)='.';
end
end
B(i,:)=str2num(M{i});
end
M=B;
display(M)
%==========================================

%TERCERA FORMA
%=========================================
clear
m=importdata('data1.txt')
[f,c]=size(m);
M=importdata('data1.txt',' ',f);
M1=M;
B=zeros(f,3);
[n,c1]=size(M);
for i=1:n
v=find(M{i}==',');
M{i}(v)='.';
B(i,:)=str2num(M{i});
end
M=B;
display(M)
%==============================


%EJECUCION
>> importandodatatxt1

M =
1.3377 1.7552 1.6948
0.8992 1.4102 2.0844
1.8390 1.8213 1.4981
1.5477 2.0468 2.0359
1.8113 0.8322 0.5819
1.3377 1.7552 1.6948
0.8992 1.4102 2.0844
1.8390 1.8213 1.4981
1.5477 2.0468 2.0359
1.8113 0.8322 0.5819
1.3377 1.7552 12.6940
200.8992 1.4102 2.0844
1.8390 1.8213 1.4981
1.5477 2.0468 2.0359
1.8113 0.8322 0.5819


M =
1.3377 1.7552 1.6948
0.8992 1.4102 2.0844
1.8390 1.8213 1.4981
1.5477 2.0468 2.0359
1.8113 0.8322 0.5819
1.3377 1.7552 1.6948
0.8992 1.4102 2.0844
1.8390 1.8213 1.4981
1.5477 2.0468 2.0359
1.8113 0.8322 0.5819
1.3377 1.7552 12.6940
200.8992 1.4102 2.0844
1.8390 1.8213 1.4981
1.5477 2.0468 2.0359
1.8113 0.8322 0.5819


M =

1.3377 1.7552 1.6948
0.8992 1.4102 2.0844
1.8390 1.8213 1.4981
1.5477 2.0468 2.0359
1.8113 0.8322 0.5819
1.3377 1.7552 1.6948
0.8992 1.4102 2.0844
1.8390 1.8213 1.4981
1.5477 2.0468 2.0359
1.8113 0.8322 0.5819
1.3377 1.7552 12.6940
200.8992 1.4102 2.0844
1.8390 1.8213 1.4981
1.5477 2.0468 2.0359
1.8113 0.8322 0.5819


Saludos.
JOSE JEREMIAS CABALLERO
ASESOR DE PROYECTOS CON MATLAB
PROFESOR DE METODOS NUMERICOS CON MATLAB
PROGRAMADOR EN MATLAB
[email protected]
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
Val: 497
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Problemas importando datos numéricos de un archivo .txt

Publicado por Dave (1094 intervenciones) el 02/06/2011 16:28:33
Hola Lorena;

Quizas, la solución más simple sea que reemplaces las comas por punto, puedes usar la opción de buscar/reemplazar, lo podras encontrar en cualquier editor de texto.

Saludos
Dave
[email protected]
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
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Problemas importando datos numéricos de un archivo .txt

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 01/06/2011 20:22:53
Hola Lorena.

Este programa ya optimizado, es decir con luz verde en la editor de matlab.

%PRIMERA FORMA
%========================================
clear
m=importdata('data1.txt');
[f,c]=size(m);
M=importdata('data1.txt', ' ',f);
B=zeros(f,c/2);
n=size(M);
for i=1:n(1)
A=M{i};
for j=1:length(A)
if A(j)==','
A(j)='.';
end
end
B(i,:)=str2double(A);
end
M=B;
display(M)
%===================================


%SEGUNDA FORMA
%=====================================
clear
m=importdata('data1.txt');
[f,c]=size(m);
M=importdata('data1.txt',' ',f);
B=zeros(f,c/2);
n=size(M);
for i=1:n(1)
for j=1:length(M{i})
if M{i}(j)==','
M{i}(j)='.';
end
end
B(i,:)=str2double(M{i});
end
M=B;
display(M)
%==========================================

%TERCERA FORMA
%=========================================
clear
m=importdata('data1.txt');
[f,c]=size(m);
M=importdata('data1.txt',' ',f);
B=zeros(f,c/2);
n=size(M);
for i=1:n(1)
v=find(M{i}==',');
M{i}(v)='.';
B(i,:)=str2double(M{i});
end
M=B;
display(M)
%==============================

Saludos.
JOSE JEREMIAS CABALLERO
ASESOR DE PROYECTOS CON MATLAB
PROFESOR DE METODOS NUMERICOS CON MATLAB
PROGRAMADOR EN MATLAB
[email protected]
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
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Problemas importando datos numéricos de un archivo .txt

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 01/06/2011 20:34:51
Hola Lorena.
En el programa optimizado.
hay un error.
Se debe cambiar str2double por str2num.
Para que todo este ok.

Saludos.
JOSE JEREMIAS CABALLERO
ASESOR DE PROYECTOS CON MATLAB
PROFESOR DE METODOS NUMERICOS CON MATLAB
PROGRAMADOR EN MATLAB
[email protected]
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

Problemas importando datos numéricos de un archivo .txt

Publicado por Lorena (37 intervenciones) el 02/06/2011 17:33:21
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