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 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241
| % SCRIPT D'AFFICHAGE DES DONNEES
function Affichage
%Chargement des donnees dans le fichier txt
%------------------------------------------
load ('Datas_85_240.txt')
lon = Datas_85_240(:,1);
lat = Datas_85_240(:,2);
fl = Datas_85_240(:,3);
tps = Datas_85_240(:,4);
Duree_mission = 11.3925; %années à CHANGER POUR CHAQUE MISSION !!!!!
Duree_annee = 365.25; %jours
global val
global Periode
global pas1
global Pas
global step
f = figure ('Visible', 'on');
% Affichage de la map 2d
%---------------------------------------------
geo = geoshow('landareas.shp', 'FaceColor', 'black');
grid on;
hold off;
% Définition du maillage pour le future interpolation
%----------------------------------------------------
Pas_Maillage_long = 0.5;
Pas_Maillage_lat = 0.5;
% Xlim = -90:Pas_Maillage_long:50; protons 10Mev
% Ylim = -60:Pas_Maillage_lat:0;
Xlim = -90:Pas_Maillage_long:20;
Ylim = -50:Pas_Maillage_lat:0;
[XI,YI] = meshgrid(Xlim,Ylim);
hold on
%grid on
% On enlève les pts qui sont < et > aux Ylim et Xlim du meshgrid
%--------------------------------------------------------
Datas_85_240(Datas_85_240(:,2) < min(Ylim), : )= [];
Datas_85_240(Datas_85_240(:,2) > max(Ylim), : )= [];
Datas_85_240(Datas_85_240(:,1) < min(Xlim), : )= [];
Datas_85_240(Datas_85_240(:,1) > max(Xlim), : )= [];
hold on
% On affiche une première interolation (sur 10000 lignes) pour lancer la
% fonction scatteredInterpolant qui colore les position en fonction du flux
%--------------------------------------------------------------------------
F = scatteredInterpolant(lon(1:10000),lat(1:10000),log(fl(1:10000)), 'natural', 'none');
ZI = F(XI,YI);
disp(size(ZI))
s = mesh(XI,YI,ZI);
hidden off
hold on
%affichage de la trajectoire (1000 lignes = 10 jours) juste avec des pts
% sz=25;
% s = scatter(lon(1:1001), lat(1:1001), sz, log(fl(1:1001)), 'filled','s');
title('Anomalie Atlantique Sud en 2D')
hold on
% lonG = sum(lon(1:10000))/length(lon(1:10000));
% latG = sum(lat(1:10000))/length(lat(1:10000));
% % disp(lonG)
% % disp(latG)
%
% p = plot(lonG, latG, '--*r')
% hold on
% Mise en place de l'echelle en logarithmique de la colorbar
%----------------------------------------------------------
d = [1 3 10 30 100 ];
caxis( log([0.1 10]))
% load MyColormap
% colormap(mymap);
c = colorbar( 'YTick', log(d), 'YTickLabel', d);
title(c,'Flux en log(cm²/s/sr/MeV)');
hold on
grid on
% Creation d'un popup menu pour selectionner la plage de données que l'on
% veut afficher
%------------------------------------------------------------------------
periode = uicontrol('Style','popup',...
'String', {'1', '2', '5', '10', '30'},...
'Position',[20,340,100,50],...
'Callback', @sample);
% Création du slider et de sa légende
%------------------------------------
tmin= min(tps);
tmax = max(tps);
slider = uicontrol('Style','slider',...
'min', tmin, 'max', tmax, 'Value', tmin,...
'SliderStep', [1000/391355 1000/391355],...
'Position',[125,54,300,23],...
'Callback', {@temps, @sample});
% Changement de l'affichage date en fonction de la position du slider
%---------------------------------------------------------------------
text = uicontrol('Style', 'text',...
'Position', [300, 25, 200, 23]);
% Ecriture sur interface graphique
%----------------------------------
L1 = uicontrol('Style','text','Position',[10,54,100,23],...
'String','09/12/2000');
L2 = uicontrol('Style','text','Position',[450,54,100,23],...
'String','30/04/2012');
L3 = uicontrol('Style','text','Position',[100,25,100,23],...
'String','Date');
L4 = uicontrol('Style', 'text', 'Position', [10, 400, 150, 23],...
'String', 'Choisir le pas d affichage');
L4 = uicontrol('Style', 'text', 'Position', [10, 330, 100, 23],...
'String', 'Flux max détecté');
% Création de la fonction qui va être appelée dans le popup menu et qui va
% adapter l'affichage
%-------------------------------------------------------------------------
function sample(source, event, handles)
valeur = get (source, 'value');
% disp(valeur)
switch valeur
case 1
Periode = 1;
case 2
Periode = 2;
case 3
Periode = 5;
case 4
Periode = 10;
case 5
Periode = 30;
end
% pas = Periode*((length(tps)/Duree_mission)/Duree_annee);
pas1 = ((length(tps)/Duree_mission)/Duree_annee);
step = [pas1 / 391355, pas1 / 391355];
% disp(step)
% Mise à jour du pas du slider
set(slider, 'SliderStep', step);
guidata(slider, slider);
end
% Création de la fonction d'affichage qui va changer à chaque fois que le
% slider sera bougé
%-------------------------------------------------------------------------
function temps(source, event, sample)
% On supprime les valeurs affectées au préalable dans
% scatterInterpolation avant d'en affecter des nouvelles
% F.Points(:,:) = [];
% F.Values(:) = [];
clear F
% On prend le temps dans le fichier Datas.txt
Datas_temp = Datas_85_240;
% disp(Periode)
val = get(source, 'Value') ;
% disp(val)
num = datestr(val);
% disp(num)
% On affiche la date correspondant au début d'affichage au bon
% format
set(text,'String', num2str(num))
% disp(size(Datas_temp))
% On onlève les valeurs < et > à val plus la période choisie (val
% est en jours)
Datas_temp(Datas_temp(:,4)< val ,:)=[];
% disp(size(Datas_temp))
Datas_temp(Datas_temp(:,4) > (val+Periode),:)=[];
%On enlève les points qui sont < et > aux Ylim et Xlim du
%meshgrid
Datas_temp(Datas_temp(:,2) < min(Ylim), : )= [];
Datas_temp(Datas_temp(:,2) > max(Ylim), : )= [];
Datas_temp(Datas_temp(:,1) < min(Xlim), : )= [];
Datas_temp(Datas_temp(:,1) > max(Xlim), : )= [];
% disp(size(Datas_temp))
lon1 = Datas_temp(:,1);
lat1 = Datas_temp(:,2);
fl1 = Datas_temp(:,3);
tps1 = Datas_temp(:,4);
% On affecte les nouvelle positions et flux pour l'interpolation
% F.Points(:,:) = Datas_temp(:,1:2);
% F.Values(:) = log(fl1(:));
% ZI = F(XI,YI);
F = scatteredInterpolant(lon1(:),lat1(:),log(fl1(:)), 'natural', 'none');
ZI = F(XI,YI);
%affichage de 10 jours de données (1000 lignes) tous les 10 jours
% for n=0:step:length(Datas_temp)
% set(s, 'xdata', lon1(:), 'ydata', lat1(:), 'cdata', fl1(:));
% drawnow;
% end
hold on
% On modifie les données dans la fonction mesh
set(s, 'xdata', XI, 'ydata', YI, 'cdata', ZI)
hidden off
hold on
% Mise de l'echelle en logarithmique
d = [1 3 10 30 100];
caxis( log([0.1 10]))
c = colorbar('YTick', log(d), 'YTickLabel', d);
title(c,'Flux en log(cm²/s/sr/MeV)');
hold on
end
end |
Partager