%***********************************************************************% % Nom du fichier : balay2.m % % % % Role du fichier : Teste la difference de temps d'execution entre % % les balayages de Matlab et ceux du programme C. % % Pour 16 sources et 1000 points. % %***********************************************************************% clear all; close all; dur=1000; theta=20*pi/180; signal(1,:)=vcircN(dur,2); signal(2,:)=vcircN(dur,2); signal(3,:)=vcircN(dur,2); signal(4,:)=vcircN(dur,2); signal(5,:)=vcircN(dur,2); signal(6,:)=vcircN(dur,2); signal(7,:)=vcircN(dur,2); signal(8,:)=vcircN(dur,2); signal(9,:)=vcircN(dur,2); signal(10,:)=vcircN(dur,2); signal(11,:)=vcircN(dur,2); signal(12,:)=vcircN(dur,2); signal(13,:)=vcircN(dur,2); signal(14,:)=vcircN(dur,2); signal(15,:)=vcircN(dur,2); signal(16,:)=vcircN(dur,2); A=(randn(16)+i*randn(16))*signal; S=A; w=-1; r=16; fprintf('Pour 16 sources et 1000 points\n'); fprintf('\n'); % Programme Matlab. fprintf('Matlab\n'); if r==2,K=1;else,K=1+round(sqrt(r));end; %%% K= NBRE MAXI DE BALAYAGES tic Rot=eye(r); K=K+2; for k=1:K, %%%%%% DEBUT BALAYAGES Q=eye(r); for i=1:r-1, for j= i+1:r, S1ij=[S(i,:);S(j,:)]; [qij,theta]=tfuni1(S1ij,w); %%%%%% ROTATION PLANE SEPARANTE Sij=qij*S1ij; %%%%%% TRAITEMENT D'UNE PAIRE S(i,:)=Sij(1,:);S(j,:)=Sij(2,:); Qij=eye(r);Qij(i,i)=qij(1,1);Qij(i,j)=qij(1,2); Qij(j,i)=qij(2,1);Qij(j,j)=qij(2,2); Q=Qij*Q; %%%%%% CUMUL DE LA ROTATION SUR LE BALAY end; end; Rot=Rot*Q'; %%%%%% CUMUL DE TOUTES LES ROTATIONS end; toc Rot fprintf('\n'); w=-1; r=16; S=A; % Programme C. fprintf('Programme C\n'); if r==2,K=1;else,K=1+round(sqrt(r));end; %%% K= NBRE MAXI DE BALAYAGES tic; [Rot2]=balayage(S,r,K,w); toc Rot2