% 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.