Matlab - Archivos .txt

 
Vista:

Archivos .txt

Publicado por Mireya (1 intervención) el 04/12/2016 21:12:00
Hola, necesito importar 5 archivos .txt para poder trabajar con ellos graficando y saber cual es la media de esos archivos, el problema principal es que los archivos contienen información en la primera linea y después constan de dos columnas con los números que se trabajara que solo están separados por espacios, si alguien sabe como hacerlo, seria de mucha ayuda , gracias


Ej:
Data from V1_Reflection_00004.txt Node Date: Thu Nov 17 13:59:16 MST 2016 User: Ocean

344.747 -39.71
344.962 -35.97
345.178 -92.69
345.393 -74.88
345.609 -48.49
345.825 -1.97
346.04 26.65
346.256 101.36
346.471 235.02
346.687 -176.52
346.902 -76.41
347.118 46.24
347.333 121.61
347.549 85.88
347.764 75.3
347.98 83.98
348.195 87.29
348.411 77.57
348.626 76.76
348.841 61.43
349.057 67.53
349.272 74.36
349.488 72.58
349.703 78.84
349.918 77.37
350.134 75.46
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 Royeth
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Archivos .txt

Publicado por Royeth (1818 intervenciones) el 05/12/2016 02:17:53
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
nombre = 'C:\Users\JesúsDavid\V1_Reflection_00004.txt';
fileID = fopen(nombre,'r');
a=textscan(fileID, '%[^\n\r]', 1, 'ReturnOnError', false);
a2=textscan(fileID, '%[^\n\r]', 1, 'ReturnOnError', false);
formatSpec = strcat(repmat('%s',1,sum(a{1}{1}==' ')+1),'%[^\n\r]');
dataArray = textscan(fileID, formatSpec, 'Delimiter', ' ', 'MultipleDelimsAsOne', true, 'ReturnOnError', false);
fclose(fileID);
raw = repmat({''},length(dataArray{1}),length(dataArray)-1);
for col=1:length(dataArray)-1
    raw(1:length(dataArray{col}),col) = dataArray{col};
end
numericData = NaN(size(dataArray{1},1),size(dataArray,2));
for col=1:sum(a{1}{1}==' ')+1
    rawData = dataArray{col};
    for row=1:size(rawData, 1);
        regexstr = '(?<prefix>.*?)(?<numbers>([-]*(\d+[\,]*)+[\.]{0,1}\d*[eEdD]{0,1}[-+]*\d*[i]{0,1})|([-]*(\d+[\,]*)*[\.]{1,1}\d+[eEdD]{0,1}[-+]*\d*[i]{0,1}))(?<suffix>.*)';
        try
            result = regexp(rawData{row}, regexstr, 'names');
            numbers = result.numbers;
            invalidThousandsSeparator = false;
            if any(numbers==',');
                thousandsRegExp = '^\d+?(\,\d{3})*\.{0,1}\d*$';
                if isempty(regexp(thousandsRegExp, ',', 'once'));
                    numbers = NaN;
                    invalidThousandsSeparator = true;
                end
            end
            if ~invalidThousandsSeparator;
                numbers = textscan(strrep(numbers, ',', ''), '%f');
                numericData(row, col) = numbers{1};
                raw{row, col} = numbers{1};
            end
        catch me
        end
    end
end
R = cellfun(@(x) ~isnumeric(x) && ~islogical(x),raw); % Find non-numeric cells
raw(R) = {NaN}; % Replace non-numeric cells
datos = cell2mat(raw);
datos=datos(:,1:sum(a2{1}{1}==' ')+1);
clearvars nombre delimiter startRow formatSpec fileID dataArray ans raw col numericData rawData row regexstr result numbers invalidThousandsSeparator thousandsRegExp me R a a2;


saludos
https://www.facebook.com/royethmatlab/
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