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
| %maillage 3D x,y,vitesse
clear all
clc
close all
%==========================================================================
%Load de mes données
Traj1=load('E:\Mes docs\pour_daniel\callac\resultats_19avr\Trajectoire_Fusion_fuite_19avr.txt');
Traj2=load('E:\Mes docs\pour_daniel\callac\resultats_19avr\Trajectoire_Vision3D_arriv_19avr.txt');
Traj=[Traj2;Traj1];
%==========================================================================
%Extraction de mes coordonnées x et y et de la vitesse
x=Traj1(:,11);
y=Traj1(:,10);
v=3.6*Traj1(:,17);
x=round(10*x); %formule pour avoir une précision 0.1 m
y=round(10*y);
v=round(10*v)/10;
%==========================================================================
%Détermination de différentes valeurs utilisées par la suite sur les graphes
maxx=floor(max(x)/10+1)*10; % calcul des limites pour le maillage
minx=floor(min(x)/10)*10;
maxv=floor(max(v)/10+1)*10;
minv=floor(min(v)/10)*10;
maxy=floor(max(y)/10+1)*10;
miny=floor(min(y)/10)*10;
intx=(maxx-minx)/5; %calcul de l'intervalle des graduations pour l'affichage des axes
inty=(maxy-miny)/5;
intv=(maxv-minv)/5;
%==========================================================================
%Tracé du graphique représentants tous les points
figure
% subplot(211)
plot3(x,y,v,'r.')
% axis equal
set(gca,'xlim',[minx maxx],'ylim',[miny maxy],'zlim',[minv maxv],...
'xtick',minx:intx:maxx,'ytick',miny:inty:maxy, ...
'xgrid','on','ygrid','on','zgrid','on')
hold on;
x=x-minx;
y=y-miny;
v=v-minv;
%==========================================================================
%fonction unique : retourne le vecteur xyv contenant les elements de la
%matrice [x(:) y(:) v(:)] triés dans un ordre croissant et sans répétitions
%L'ajout de rows permet de faire le trie en tenant compte des valeurs de
%toute la ligne.
[xyv,a,b] = unique([x(:) y(:) v(:)],'rows');
%==========================================================================
%fonction histc : permet, pour chaque coordonnées, de compter le nombre de
%points qui correspondent.
n=histc(b,unique(b));
%==========================================================================
%création du maillage à partir d'une matrice de 0
clear Traj1 Traj2 Traj
M=zeros(maxx-minx,maxy-miny,maxv-minv);
idx = sub2ind(size(M),xyv(:,1),xyv(:,2),xyv(:,3));
idx=round(idx);
M(idx) = n;
% for i=1:90
% M=[M(:,:,i)];
% end
%==========================================================================
%tracé du maillage
% figure
subplot(212)
image('xdata',[0 maxx],'ydata',[0 maxy],'zdata',[0 maxv],'cdata',M.'+1)
colormap(hsv(max(n)+1));
c=colorbar;
set(c,'ytick',1:max(n)+1,'yticklabel',num2str((0:max(n)).'))
axis equal
set(gca,'xlim',[minx maxx],'ylim',[miny maxy],'zlim',[minv maxv],...
'xtick',minx:intx:maxx,'ytick',miny:inty:maxy,'ztick',minv:intv:maxv, ...
'xgrid','on','ygrid','on','zgrid','on',...
'layer','top')
hold on |
Partager