Ce programme a pour but de calculer la TF de tous les points du wafer et de créer la matrice tfv(x ;y ;frequence).
Voici le code réalisé sous Matlab, qui nous a permit de faire ce programme.
tic
for inc=1:1000:5001
%inc=1
d1='E:\mesures manip\manip du 4 fevrier\';%prendre les mesures de l'oscilo
imax=168;
jmax=105;
t0=250000+inc; % tps de départ
tmax=1000;%nb points
tfv=zeros(imax,jmax,tmax);
Delta=.3;%0.3
Nmax=imax*jmax;
Y=0;
X=0;
% lecture 1er point
filename=[d1,'F1X=', num2str(X),'_Y=',num2str(Y),'_00000.trc']; % permet de definir le nom d'un fichier
if exist(filename)==2 % teste si le fichier existe, sinon, c'est un point hors wafer ou un point manqué...
W=lcreadOX(filename);
o=fftshift(detrend(fft(W.y),'constant'));
time=W.x(t0:t0-1+tmax);
tfv(round(Y/Delta)+1,round(X/Delta)+1,:)=o(t0:t0-1+tmax);% vecteur 'amplitude
else
tfv(round(Y/Delta)+1,round(X/Delta)+1,:)=NaN; %W.y(t0:t0-1+tmax);
end
% lecture 1ere ligne
for jj=1:(jmax-1)
X=X+Delta;
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);
o=fftshift(detrend(fft(W.y),'constant'));
tfv(round(Y/Delta)+1,round(X/Delta)+1,:)=o(t0:t0-1+tmax);% vecteur 'amplitude'
else
tfv(round(Y/Delta)+1,round(X/Delta)+1,:)=NaN; %W.y(t0:t0-1+tmax);
end
end
% Boucle principale
for ii=2:imax
ii
% Premier point de la ligne i
if(mod(ii,2)==1)
X=0;
else
X=(jmax-1)*Delta;
end
Y=Y+Delta;
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);
o=fftshift(detrend(fft(W.y),'constant'));
tfv(round(Y/Delta)+1,round(X/Delta)+1,:)=o(t0:t0-1+tmax);% vecteur 'amplitude'
else
tfv(round(Y/Delta)+1,round(X/Delta)+1,:)=NaN ; %W.y(t0:t0-1+tmax);
end
for jj=1:(jmax-1)
if(mod(ii,2)==1)
X=X+Delta;
else
X=X-Delta;
end
if(X<1e-4)
X=0;
end
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);
o=fftshift(detrend(fft(W.y),'constant'));
tfv(round(Y/Delta)+1,round(X/Delta)+1,:)=o(t0:t0-1+tmax);% vecteur
'amplitude'
else
tfv(round(Y/Delta)+1,round(X/Delta)+1,:)=NaN ;%W.y(t0:t0-1+tmax);
end
end
end;
savename = (['tfv',num2str(inc),'.mat']);
save(savename,'tfv');
end
toc