Matlab - Ayuda volcar contenido en matlab

 
Vista:
sin imagen de perfil

Ayuda volcar contenido en matlab

Publicado por SOPHIE (5 intervenciones) el 28/09/2017 20:29:21
hola a todos, soy nueva con esto del matlab, y el problema que tengo es hacer una funcion que a partir de un archivo de texto, ponga todo su contenido en matlab en forma de variables.
Entonces he empezado de esta manera, pero cuando quiero ejecutar la funcion tengo un error.
Agradeceria mucho su ayuda.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
clear;close;clc;
%function [MDatos,enc]=lector(file,ncol,nenc,delimitador)
%variables
delimitador=','
ncol=3;
nenc=3;
 
 
file='file2.txt'
 
fileID=fopen(file,'r');
 
for i=1:nenc
    enc{i,1}=fgetl(fileID);
end
 
A1=textscan(fileID,'%f64 %f64 %f64','Delimiter',',');
A2=cell2mat(A1);
 
v='';
for i=1:ncol
v=strcat([v,'%f64']);
end


Saludos
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
sin imagen de perfil

Ayuda volcar contenido en matlab

Publicado por SOPHIE (5 intervenciones) el 28/09/2017 21:09:14
Hola Jesus

Una tabla de datos como esta
#Recording frequency
#Number of samples
#SCU1.Position.Engineering value [mm] SCU1.Servo valve current [%] Time in recording [s] Divide time by 24*3600 to get excel time
100.12619 -1.6732972 0
100.10826 -1.4038107 0.01
100.12619 -1.1452684 0.02
100.23376 -0.91933113 0.03
100.34134 -0.7117759 0.04
100.5565 -0.53889704 0.05
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 JESUS DAVID ARIZA ROYETH
Val: 3.309
Plata
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

Ayuda volcar contenido en matlab

Publicado por JESUS DAVID ARIZA ROYETH (1818 intervenciones) el 28/09/2017 21:27:06
bueno eso depende del tipo de salida que desees porque según la explicación parecía otra cosa totalmente diferente al ejemplo, puede ser una salida de este tipo :

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
filename = 'D:\archivo.txt';
delimiter = '\t';
formatSpec = '%s%s%s%s%[^\n\r]';
fileID = fopen(filename,'r');
dataArray = textscan(fileID, formatSpec, 'Delimiter', delimiter,  '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,2,3,4]
    % Converts strings in the input cell array to numbers. Replaced non-numeric
    % strings with NaN.
    rawData = dataArray{col};
    for row=1:size(rawData, 1);
        % Create a regular expression to detect and remove non-numeric prefixes and
        % suffixes.
        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;
 
            % Detected commas in non-thousand locations.
            invalidThousandsSeparator = false;
            if any(numbers==',');
                thousandsRegExp = '^\d+?(\,\d{3})*\.{0,1}\d*$';
                if isempty(regexp(numbers, thousandsRegExp, 'once'));
                    numbers = NaN;
                    invalidThousandsSeparator = true;
                end
            end
            % Convert numeric strings to numbers.
            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);
raw(R) = {NaN};
archivo = cell2mat(raw);
clearvars filename delimiter formatSpec fileID dataArray ans raw col numericData rawData row regexstr result numbers invalidThousandsSeparator thousandsRegExp me R;
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
sin imagen de perfil

Ayuda volcar contenido en matlab

Publicado por SOPHIE (5 intervenciones) el 28/09/2017 21:34:12
Pero realmente lo que quiero es ejecutar la funcion para con el primer texto que envie se lea automatico cuando tenga mas cantidad de columnas o encabezados? no se si me hago entender?


Muchas gracias pr el codigo igual pero no entendi mucho
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