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
| clear all;
close all;
clc;
filename = {'asset1','asset2'};
ext= '.csv';
delimiterIn = ',';
for i = 1:numel(filename) % Nombre de fichiers
fid = fopen([filename{i},ext]); % Ouvrir le fichier
if fid % Le fichier s'est ouvert
tline = fgetl(fid); % Lire une ligne
headers = regexp(tline, regexptranslate('escape', delimiterIn), 'split'); % Séparer par les virgules
tline = fgetl(fid); % Lire la prochaine ligne
j = 1; % Compteur de lignes
while ischar(tline) % Il y a une ligne (pas la fin du fichier)
tmp = regexp(tline, regexptranslate('escape', delimiterIn), 'split'); % Séparer par les virgules
tmp{1} = datenum(tmp{1},'mm/dd/yy'); % Convertir la date en nombre
for k=2:numel(tmp) % Convertir tous les strings lus en nombres
tmp{k} = str2num(tmp{k});
end
data(j,:,i) = cell2mat(tmp); % Convertir ces données en une matrice de nombres
if i > 1
if data(j,1,i) ~= data(j,1,i-1) % Si la date n'est pas la même que celle du fichier précédent
flag(j) = false; % Incorrect - Noter qu'il faut la supprimer
else
flag(j) = true; % Correct - Noter qu'il faut la garder
end
end
j = j + 1; % Incrémenter le compteur de lignes
tline = fgetl(fid); % Lire la prochaine ligne
end
end
end
if numel(filename) > 1
data = data(flag,:,:); % Ne garder que les dates identifiées
end
% Le fichier data contient :
% data(:,1,:) toutes les dates en nombre
% data(:,2:end,:) toutes les données (2 : ARG PESO, 3 : AUST DOLLAR, 4 : BRIT POUND)
% data(:,1,1) toutes les dates du premier fichier
% data(:,1,2) toutes les dates du deuxième fichier, etc
% Donc, en résumé :
% data a 3 dimensions
% Les lignes (première dimension) pointent chacune des dates
% Les colonnes (deuxième dimension) pointent les valeurs (sauf la première colonne qui pointe toutes les dates)
% Les pages (troisième dimension) pointent les fichiers
% headers contient les titres des colonnes
% Petit exemple
col = 2; % 2 : ARG PESO, car en fait la première colonne contient les dates
figure;
for i=1:numel(filename)
% Faire le graphique pour tous les fichiers
% data(:,1,i) contient les dates du fichier i (devraient toutes être les mêmes)
% data(:,col,i) contient les données du fichier i à la colonne col
plot(data(:,1,i),data(:,col,i)); grid on; hold all;
end
hold off;
set(gca,'XTick',data(:,1,1));
datetick('x','mm/dd/yy','keepticks'); % Convertir les dates numériques en texte
title(headers{col});
legend(filename,'Location','NorthWest');
xlabel('Date');
ylabel('Valeur'); |
Partager