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
|
clear all
filename = 'C:\Users\Joseph\Desktop\PAYERNE1LANCER.txt'; %vérification du bon chemin d'accès !
delimiter = {'B-9999',' ','B','A'};
formatSpec = '%s%s%s%s%s%[^\n\r]';
fileID = fopen(filename,'r');
dataArray = textscan(fileID, formatSpec, 'Delimiter', 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,2,3,4,5]
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);
raw(R) = {NaN};
NUMSTATIONLVL = cell2mat(raw(:, 1));
sizeNUMSTATIONLVL = size(NUMSTATIONLVL);
NUMSTATIONLVL(isnan(NUMSTATIONLVL)|NUMSTATIONLVL==-9999)= 0;
TIMEELPSDTIME = cell2mat(raw(:, 2));
sizeTIMEELPSDTIME = size(TIMEELPSDTIME);
TIMEELPSDTIME(isnan(TIMEELPSDTIME)|TIMEELPSDTIME==-9999)= NaN;
MONTHPRESSURE = cell2mat(raw(:, 3));
sizeMONTHPRESSURE = size(MONTHPRESSURE);
MONTHPRESSURE(isnan(MONTHPRESSURE)|MONTHPRESSURE==-9999)= 0;
DAYGPH = cell2mat(raw(:, 4));
sizeDAYGPH = size(DAYGPH);
DAYGPH(isnan(DAYGPH)|DAYGPH==-9999)= NaN;
HOURTEMPERATURE = cell2mat(raw(:, 5));
sizeHOURTEMPERATURE = size(HOURTEMPERATURE);
HOURTEMPERATURE(isnan(HOURTEMPERATURE)|HOURTEMPERATURE==-9999)= 0;
MINITIALE=[NUMSTATIONLVL,TIMEELPSDTIME,MONTHPRESSURE,DAYGPH,HOURTEMPERATURE];
clearvars filename delimiter formatSpec fileID dataArray ans raw col numericData rawData row regexstr result numbers invalidThousandsSeparator thousandsRegExp me R; |
Partager