Ce programme a pour but a partir de l expérience tout d abord d afficher les fibrations espace temps puis sur les directions verticales, horizontales et a 45° effectue la TF des points pour afficher les courbes expérimentales de dispersion et ainsi de montrer l’anisotropie du matériau enfin il moyenne la TF pour avoir une courbe exploitable de la courbe de dispersion.


Voici le code réalisé sous Matlab, qui nous a permit de faire ce programme avec le résultat obtenue.


   % trace les courbes de dispersion ou vitesses de phase(à compléter)
% expérimentales du mode A0 par FFT 2D
% pour 3 directions de propagation différentes: verticale, horizontale et 45°
%wafer 4" de 0.2mm d'épaisseur

%% direction verticale à partir du point source

d1='E:\mesures_manip\manip du 4 fevrier\';
jmax=168; % nbre de points
M=zeros(5000,jmax); % initialisationmatrice FFT 2D
Delta=.3; % pas en mm
Y=0;
X=0;
curve_type=1 ;% 1=dispersion curve, 2=phase speed curve.
 
% nom des axes: xlabel('...'); limite des axes: xlim([])



for j=1:jmax

    filename=[d1,'F1X=12.3_Y=',num2str(Y),'_00000.trc'] % permet de definir le nom d'un fichier (à modifier)
    if exist(filename)==2
  
    W=lcreadOX(filename);
    M(1:5000,j)=W.y(862:862+4999)';

    else
    M(1:5000,j)=0; % s'il n'y a pas de fichiers
    end

      Y=Y+Delta;
end

W.x=W.x+1.1390e-4;
W.x(862)=0;
time=W.x(862:4999+862); % vecteur temps
Ts=time(2)-time(1);
fn=1/Ts;
ff=linspace(-fn/2,fn/2,length(time)) ;
f1=ff((length(ff))/2+1:(length(ff))); % vecteur fréq

posX=0:0.3e-3:jmax*(0.3e-3); % distance balayée en m pour avoir k en 1/m
posXs=posX(2)-posX(1);
kkn=2*pi/posXs;
kk=linspace(-kkn/2,kkn/2,length(posX)) ;
k1=kk((length(kk))/2+1:(length(kk))); % vecteur k

M2=abs(fft2(M)); % FFT 2D
ZZ=fftshift(log10(M2+1));

figure,imagesc(posX,time,(M)),set(gca,'Ydir','normal'),title('vibration plaque '),ylabel('temps(s)'),xlabel('espace')
%représentation temps/espace


%imagesc(ZZ),set(gca,'Ydir','normal'),ylim([2501 5000]),xlim([84 168])
figure,imagesc(k1,2*pi*f1',ZZ(2501:5000,84:168)),set(gca,'Ydir','normal'),title('A0 dispersion curve (verticale)'),ylabel('w(rad/s)'),xlabel('k(1/m)')
%représentation fréquence/espace

%TT=max(ZZ(2501:2550,:))';
TT(84:90)=max(ZZ(2501:2560,84:90))';
TT(91:95)=max(ZZ(2516:2660,91:95))';
TT(96:99)=max(ZZ(2621:2780,96:99))';
TT(100:110)=max(ZZ(2730:3370,100:110))';
TT(111:136)=max(ZZ(3217:4500,111:136))';
TT(137:168)=max(ZZ(4360:5000,137:168))';
 

for ii=84:168
    YY(ii-83)=find((ZZ(2500:5000,ii))==TT(ii)); % position des max
end

if curve_type==1
figure,plot(k1(1:55),2*pi*f1(YY(1:55)),'r.'),title('courbe de dispersion verticale ')
%figure,plot(k1(1:66),f1(YY(1:66)),'r.')% dispersion curve
%set(gca,'FontSize',24)
else
figure,plot(f1(1:67),(2*pi*f1(YY(1:67)))./(k1(1:67)),'.') % speed curve
end

hold on
%clear all
%% direction horizontale à partir du point source
d1='E:\mesures_manip\manip du 4 fevrier\';
imax=105;
M=zeros(5000,imax);
Delta=.3;
Y=0;
X=0;
curve_type=1 ;% 1=dispersion curve, 2=phase speed curve.

 
for i=1:imax

    filename=[d1,'F1X=',num2str(X),'_Y=30.3_00000.trc']
 
  
    W=lcreadOX(filename);
    M(1:5000,i)=W.y(1:5000)';

  
         X=X+Delta

end

time=W.x(1:5000); % time array
Ts=time(2)-time(1);
fn=1/Ts;
ff=linspace(-fn/2,fn/2,length(time)) ;
f1=ff((length(ff))/2+1:(length(ff)));

posX=0:0.3e-3:imax*(0.3e-3); % distance balayée en m pour avoir k en 1/m
posXs=posX(2)-posX(1);
kkn=2*pi/posXs;
kk=linspace(-kkn/2,kkn/2,length(posX)) ;
k1=kk((length(kk))/2+1:(length(kk)));

M2=abs(fft2(M));
ZZ=fftshift(log10(M2+1));


%figure,imagesc(posX,time,(M)),set(gca,'Ydir','normal'),ylim([0 1e-4]),title('hor')
%%représentation temps/espace


%figure,imagesc(ZZ),set(gca,'Ydir','normal'),ylim([2501 5000]),xlim([52 105]),title('A0 dispersion curve (horizontale)'),ylabel('w(rad/s)'),xlabel('k(1/m)')
figure,imagesc(k1,2*pi*f1',ZZ(2501:5000,52:105)),set(gca,'Ydir','normal'),title('A0 dispersion curve (horizontale)'),ylabel('w(rad/s)'),xlabel('k(1/m)')

TT(52:59)=max(ZZ(2500:2660,52:59))';
TT(60:65)=max(ZZ(2600:2980,60:65))';
TT(66:75)=max(ZZ(2870:3690,66:75))';
TT(76:85)=max(ZZ(3560:4500,76:85))';
TT(86:105)=max(ZZ(4330:5000,86:105))';

for ii=52:105
    YY(ii-51)=find((ZZ(2501:5000,ii))==TT(ii)); % position des max
end

if curve_type==1
figure,plot(k1(1:39),2*pi*f1(YY(1:39)),'r.'),title('courbe de dispersion (horizontale)'),ylabel('w(rad/s)'),xlabel('k(1/m)') % dispersion curve
else
plot(f1(1:37),(2*pi*f1(YY(1:37)))./(k1(1:37)),'r.') % speed curve
end

%% direction à 45° à partir du point source

d1='E:\mesures_manip\manip du 4 fevrier\';
rmax=105;
M=zeros(5000,rmax);
Delta=0.3;
Y=0;
X=0;
curve_type=1 ;% 1=dispersion curve, 2=phase speed curve.


 
for r=1:rmax

    filename=[d1,'F1X=',num2str(X),'_Y=',num2str(Y),'_00000.trc'] % permet de definir le nom d'un fichier
    if exist(filename)==2
  
    W=lcreadOX(filename);
    M(1:5000,r)=W.y(1:5000)';

    else
M(1:5000,j)=0;
    end

      X=X+Delta
      Y=Y+Delta

end

time=W.x(1:5000); % time array
Ts=time(2)-time(1);
fn=1/Ts;
ff=linspace(-fn/2,fn/2,length(time)) ;
f1=ff((length(ff))/2+1:(length(ff)));

posX=0:sqrt(2)*0.3e-3:sqrt(2)*rmax*(0.3e-3); % distance balayée en m pour avoir k en 1/m
posXs=posX(2)-posX(1);
kkn=2*pi/posXs;
kk=linspace(-kkn/2,kkn/2,length(posX)) ;
k1=kk((length(kk))/2+1:(length(kk)));

M2=abs(fft2(M));
ZZ=fftshift(log10(M2+1));

%figure,imagesc(posX,time,(M)),set(gca,'Ydir','normal'),ylim([0 1e-4]),title('45')
%%représentation temps/espace

%imagesc(ZZ),set(gca,'Ydir','normal'),ylim([2501 5000]),xlim([176 350])
figure,imagesc(k1(1:53),2*pi*f1',ZZ(2501:5000,53:105)),set(gca,'Ydir','normal'),title('A0 dispersion curve (45°)'),ylabel('w(rad/s)'),xlabel('k(1/m)')
TT(52:59)=max(ZZ(2501:2600,52:59))';
TT(60:65)=max(ZZ(2540:2770,60:65))';
TT(66:75)=max(ZZ(2660:3240,66:75))';
TT(76:85)=max(ZZ(3160:3650,76:85))';
TT(86:105)=max(ZZ(3540:5000,86:105))';

for ii=52:105
    YY(ii-51)=find((ZZ(2501:5000,ii))==TT(ii)); % position des max
end

if curve_type==1
figure,plot(k1(1:53),2*pi*f1(YY(1:53)),'g.')%%%%%%%%%%%%%%%%%%%%%%%%%53 a changer???
xlim([0 5000])% dispersion curve
ylim([0 10e6])
title('A0 dispersion curve')
ylabel('w(rad/s)')
xlabel('k(1/m)')
else
plot(f1(1:45),(2*pi*f1(YY(1:45)))./(k1(1:45)),'g.') % speed curve
title('Vitesse de phase A0 pour Ultra')
ylabel('v(m/s)')
xlabel('f(Hz)')
end

%legend('vertical direction','horizontal direction','45 degrees')



 

Retour en haut de la page.