Matlab - fopen

   
Vista:

fopen

Publicado por jhwcas (1 intervención) el 12/12/2009 00:20:43
ola a todos...necesito saber como puedo leer un archivo .txt q contiene una lista de numeros, ordenada por rangos. y tiene treinta datos por cada rango, ,entonces tengo q formar un vector por cada dato del rango. osea sacar una matriz.. para despues graficarlos, desde el GUI, pero no he podido sacar esa matriz, por q el matlab trabaja con el codigo asci entonces nose como pasar el texto a asci ni como sacar esa matriz......les agradezco su atencion.....
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: fopen

Publicado por Jorge (226 intervenciones) el 12/12/2009 23:39:13
Bueno, el texto ya es ascii, por definición.

Matlab puede leer archivos ascii, así:

d = fopen('nombre_archivo.txt');

% Lee las dos primeras columnas y las pone en un 'cell array' R
R = textscan(d, '%f %f');

% cierra archivo
fclose(d);

Puedes trabajar con los datos de las columnas así:
a = R{1}
b = R{2}

etc.

La URL de arriba tiene un ejemplo completo al respecto.
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

respondeme

Publicado por Claudio (22 intervenciones) el 15/12/2009 21:00:17
hola bueno yo estoy diseñando una gui muy similar
yo cargo el txt desde la gui , este txt tiene dos columans de numeros el cual matlab lo transforma a una matriz de dos vectores

el callbac del pushbutton es el siguinte

[FileName Path]=uigetfile({'*.txt'},'Abrir documento');
if isequal(FileName,0)
return
else
load(strcat(Path,FileName));
handles.c=load(strcat(Path,FileName));
end
guidata(hObject, handles);


pd =en mi caso el txt posee 2 columnas de numeros niguna letra ni comillas ni nada , si existe otro metodo mas eficaz de reconocer el txt inclusive con letras me lo podrias decir o dame tu messenger para compartir conocimiento.

nota =yo no uso el import wizard
mi txt contiene lo siguiente
315 0
630 0
930 0
1335 0
2220 0
2280 0
3660 0
4065 0
6675 0
6735 0
9240 0
10590 0
10620 0
11910 0
12960 0
13005 1
13125 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

RE:respondeme

Publicado por Kike (304 intervenciones) el 29/12/2009 03:34:04
Yo lo hice así:

% Escoger archivo
[nombre_archivo,ruta]=uigetfile('*.txt','Escoja un archivo txt:');
nombre=[ruta,nombre_archivo];

matriz=[]; % se inicializa la matriz

if ischar(nombre) % si se escoge un archivo
id_archivo=fopen(nombre,'r'); % abre archivo para leerlo
if id_archivo==-1 % si hay error, da mensaje de error
texto=sprintf('El archivo "%s" no pudo abrirse para lectura.',nombre);
msgbox(texto,'Error','error');
else % si no hay error
while ~feof(id_archivo) % se ejecuta el bucle o lazo mientras no llegue al final del archivo de texto
linea=fgetl(id_archivo); % lee línea por línea y la agrega al cell array arreglo_llamada
espacio_blanco=find(isspace(linea)); % busca los espacios en blanco que separan las columnas de datos. Es un vector que puede tener al menos un elemento
% El primer número va desde el primer caracter hasta antes del
% espacio en blanco. El segundo número va desde después del
% espacio en blanco hasta que finaliza.
matriz(end+1,1:2)=[str2num(linea(1:espacio_blanco(1)-1)),str2num(linea(espacio_blanco(1)+1:end))];
end
% Se presenta la matriz obtenida:
disp('La matriz es:');
matriz
end
end
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