From: yomguy Date: Tue, 13 Nov 2007 02:40:27 +0000 (+0000) Subject: mv Manu X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=43360b7c70b7366dbf5fc595b745f4eeba5a303c;p=cnaq.git mv Manu git-svn-id: http://svn.parisson.org/svn/CNAQ/trunk@107 5fc3e0e6-29bc-4d03-b52b-c088cb822bde --- diff --git a/Manulab/Lissage_Spl.m b/Manulab/Lissage_Spl.m deleted file mode 100644 index 26a6446..0000000 --- a/Manulab/Lissage_Spl.m +++ /dev/null @@ -1,22 +0,0 @@ -function [Out_Freq,Out_dB] = Lissage_Spl (In_Freq ,In_dB) -load Parametres_Affichages -load Parametres_Mesures -Nb_dB = Para_Affi.RF.Nb_dB; -Nb_dB_Affiche = 48; -dbmin = -500; -% Diminution du nbs de point avant le lissage pour eviter -rapport = round(Nb_dB_Affiche*10/Para_Affi.RF.Nb_dB); -liste_f_log = freqoctav(Para_Affi.RF.Fmin*0.3,Para_Mesu.Fs/1.5,Nb_dB_Affiche*10); -liste_db_log = interp1 (In_Freq ,In_dB, liste_f_log,'cubic',dbmin); - -db_log_smooth = smooth(liste_db_log,rapport); - -db_ok2 = db_log_smooth(2 : length(db_log_smooth)-1); %elim ination du 1° et dermier point -f_ok2 = liste_f_log (2 : length(liste_f_log)-1); - -Out_Freq = freqoctav(Para_Mesu.Fmin,Para_Mesu.Fmax,Nb_dB_Affiche); - -Out_dB = interp1(f_ok2,db_ok2,Out_Freq,'cubic',dbmin); - -function [valf]=freqoctav(fmin,fmax,db) -syms nx; nf=floor(log(fmax/fmin)*db/log(2))+2; for i = 1:nf; valf(i) = fmin*2^((i-1)/db); end diff --git a/Manulab/cmsmmshp.m b/Manulab/cmsmmshp.m deleted file mode 100644 index 9241f56..0000000 --- a/Manulab/cmsmmshp.m +++ /dev/null @@ -1,33 +0,0 @@ -%Fréquences de résonance issues de la mesure -frhp=20; % fréquence de résonance du Hp seul -frb=35; % fréquence de résonance du Hp sur caisson clos -frhpm=14; % fréquence de résonance du Hp + masse ajoutée -frbm=23.12; %fréquence de résonance du Hp sur caisson clos + masse ajoutée - -%Pulsations correspondantes -omrhp=2*pi*frhp; -omrb=2*pi*frb; -omrhpm=2*pi*frhpm; -omrbm=2*pi*frbm; - -%Données Physiques -sd=352e-4; %Surface de la membrane m2 -V=0.037%(0.395-0.06)^3-0.001; % Volume du caisson clos m3 -Ma=0.181 %masse ajoutée kg - -kb=1.4*1.0135e5/V*sd^2; %Raideur du caison clos N/m - -disp('Détermination HP seul et caisson clos') -Cms1=1/kb*(omrb^2/omrhp^2-1) -%mms1=1/omr^2/Cms -Mms1=1/omrb^2*(1/Cms1+kb) -% frth=1/2/pi/sqrt(0.1353*0.52e-3) -% frm=1/2/pi/sqrt(Cms*mms1) - -disp ('Détermination HP seul et HP + masse') -Mms2=Ma/(omrhp^2/omrhpm^2-1) -Cms2=1/(Mms2+Ma)/omrhpm^2 - -disp('Détermination HP + masse et Hp clos') -Mms3=(kb+Ma*omrhpm^2)/(omrb^2-omrhpm^2) -Cms3=1/(Mms3+Ma)/omrhpm^2 \ No newline at end of file diff --git a/Manulab/fonc_trans_recup.m b/Manulab/fonc_trans_recup.m deleted file mode 100644 index 0d4c1e0..0000000 --- a/Manulab/fonc_trans_recup.m +++ /dev/null @@ -1,23 +0,0 @@ -function [RI,spec] = fonctrans_recup(filename); -%calcul d'une fonction de tranfert mesurée par l'interface CNACQ -%Sorties : fonction de transfert et réponse impulsionnelle -load (filename); - -% soustraction de la composante continue -DC=mean(sig_mes,1); -sig_mes=sig_mes-DC; -S=size(sig_mes); -NT=S(1); -Freq =logspace(log10(f_min), log10(f_max), NT)'; -excinv=sig_exc(NT:-1:1).*f_min./Freq; -[RI,spec] = fconv(sig_mes,excinv); -plot(sig_mes,'k'); -hold on -plot(sig_exc,'r') -angleexc=unwrap(angle(fft(sig_exc))); -anglemes=unwrap(angle(fft(sig_mes))); -ang=anglemes-angleexc + 2*pi; -figure -plot(ang) - - diff --git a/Manulab/gene_chirp.m b/Manulab/gene_chirp.m deleted file mode 100644 index 06001c4..0000000 --- a/Manulab/gene_chirp.m +++ /dev/null @@ -1,66 +0,0 @@ -function gene_chirp - -load Parametres_Mesures - -Size = 2^Para_Mesu.Prec ; -Para_Mesu.Tps = (Size/Para_Mesu.Fs) % Tps de Mesure -Time = [0:Size-1]./Para_Mesu.Fs ; % Decalage de la Data.Fmini -Freq = logspace(log10(Para_Mesu.Fmin), log10(Para_Mesu.Fmax), Size) ; -w1 = 2*pi*Para_Mesu.Fmin; -w2 = 2*pi*Para_Mesu.Fmax; -Stimulus = .9 *sin((w1*Para_Mesu.Tps)/log(w2/w1) * (exp(Time'/Para_Mesu.Tps*log(w2/w1))-1)) ; -L = floor(Size/100)*2 ; -Window = flattop(L) ; -Calc_Theo.Stimulus = [Window(1:L/2); ones(Size-L,1); Window(L/2+1:L)].*Stimulus; -Calc_Theo.St_inv = Stimulus([Size:-1:1]) .* (Para_Mesu.Fmin./Freq') ; -Calc_Theo.Freq = Freq'; -wavwrite(Calc_Theo.Stimulus,Para_Mesu.Fs ,16,'chirplog') -% Application du niveau de Mesure -% Calc_Theo.Stimulus = Calc_Theo.Stimulus * 10^(Para_Mesu.Nive/20) ; - -% Calcul de la reponse Impulse Theorique -% Calc_Theo.Parfait.IR = fconv(Calc_Theo.Stimulus, Calc_Theo.St_inv) ; - -% Calcul de la FFT -% Calc_Theo.Parfait.FFT = 20*log10(abs(fft(Calc_Theo.Parfait.IR))) ; - -% Calcul de l'échelle des fréquences -% Calc_Theo.Parfait.Fr = Para_Mesu.Fs/(length(Calc_Theo.Parfait.FFT)) ; -% Calc_Theo.Parfait.Freq = 0:Calc_Theo.Parfait.Fr:Para_Mesu.Fs-Calc_Theo.Parfait.Fr ; - -% Calcul de courbe de reponse avec Fenetrage Tempo -% [Val,Num_Max_Par] = max(abs(Calc_Theo.Parfait.IR)) ; -% Nombres_Ech = round(Para_Mesu.Tps_Fen/1000*Para_Mesu.Fs) ; -% Ech_Min_Par = round(Num_Max_Par-Nombres_Ech) ; -% Ech_Max_Par = round(Ech_Min_Par+2*Para_Mesu.Tps_Fen/1000*Para_Mesu.Fs) ; -% IR_Par_Fen = Calc_Theo.Parfait.IR(Ech_Min_Par:Ech_Max_Par) ; -% Calc_Theo.Parfait.FFT_Fen = 20*log10(abs(fft(IR_Par_Fen))) ; - -% Calcul de l'échelle des fréquences -% Calc_Theo.Parfait.Fr_Fen = Para_Mesu.Fs/(length(Calc_Theo.Parfait.FFT_Fen)) ; -% Calc_Theo.Parfait.Freq_Fen = 0:Calc_Theo.Parfait.Fr_Fen:Para_Mesu.Fs-Calc_Theo.Parfait.Fr_Fen ; - -% Fenetrage tempo des THD -% IR = Calc_Theo.Parfait.IR; -% Decal = round((length(IR)/(2^15*2)*(32610-29865))/1.3);% 30% de marge -% [a,Num_Max] = max(abs(IR)); -% Fen = blackman(Decal*2); Demi_Fen = Fen(1:Decal)'; Num_Debut = Num_Max-Decal; -% Debut = zeros(1,Num_Debut); Nbs_Ones = length(IR)-length(Debut)-length(Demi_Fen); Fin = ones(1,Nbs_Ones); -% Fenetre = [Debut Demi_Fen Fin]'; -% IR_Sans_THD = Fenetre.*IR; -% Calc_Theo.Parfait.IR_Sans_THD = IR_Sans_THD; - -% Calcul de la FFT -% Calc_Theo.Parfait.FFT_Sans_THD = 20*log10(abs(fft(Calc_Theo.Parfait.IR_Sans_THD))) ; - - -save Calculs_Theoriques Calc_Theo - - - - -function [window] = flattop(N) -a1 = -1.93; a2 = 1.29; a3 = -0.388; a4 = 0.028; temp = [1:N]'/N; window = 1 + a1*cos(2*pi*temp) + a2*cos(4*pi*temp) + a3*cos(6*pi*temp) + a4*cos(8*pi*temp); window = window/max(window); - -function [New_sign, Fs] = fconv(Old_sign, Cvfilter, Fs) -X = fft([Old_sign; zeros(length(Cvfilter)-1, 1)]); Y = fft([Cvfilter; zeros(length(Old_sign)-1, 1)]); New_sign = real(ifft(X.*Y)); diff --git a/tools/Manulab/Lissage_Spl.m b/tools/Manulab/Lissage_Spl.m new file mode 100644 index 0000000..26a6446 --- /dev/null +++ b/tools/Manulab/Lissage_Spl.m @@ -0,0 +1,22 @@ +function [Out_Freq,Out_dB] = Lissage_Spl (In_Freq ,In_dB) +load Parametres_Affichages +load Parametres_Mesures +Nb_dB = Para_Affi.RF.Nb_dB; +Nb_dB_Affiche = 48; +dbmin = -500; +% Diminution du nbs de point avant le lissage pour eviter +rapport = round(Nb_dB_Affiche*10/Para_Affi.RF.Nb_dB); +liste_f_log = freqoctav(Para_Affi.RF.Fmin*0.3,Para_Mesu.Fs/1.5,Nb_dB_Affiche*10); +liste_db_log = interp1 (In_Freq ,In_dB, liste_f_log,'cubic',dbmin); + +db_log_smooth = smooth(liste_db_log,rapport); + +db_ok2 = db_log_smooth(2 : length(db_log_smooth)-1); %elim ination du 1° et dermier point +f_ok2 = liste_f_log (2 : length(liste_f_log)-1); + +Out_Freq = freqoctav(Para_Mesu.Fmin,Para_Mesu.Fmax,Nb_dB_Affiche); + +Out_dB = interp1(f_ok2,db_ok2,Out_Freq,'cubic',dbmin); + +function [valf]=freqoctav(fmin,fmax,db) +syms nx; nf=floor(log(fmax/fmin)*db/log(2))+2; for i = 1:nf; valf(i) = fmin*2^((i-1)/db); end diff --git a/tools/Manulab/cmsmmshp.m b/tools/Manulab/cmsmmshp.m new file mode 100644 index 0000000..9241f56 --- /dev/null +++ b/tools/Manulab/cmsmmshp.m @@ -0,0 +1,33 @@ +%Fréquences de résonance issues de la mesure +frhp=20; % fréquence de résonance du Hp seul +frb=35; % fréquence de résonance du Hp sur caisson clos +frhpm=14; % fréquence de résonance du Hp + masse ajoutée +frbm=23.12; %fréquence de résonance du Hp sur caisson clos + masse ajoutée + +%Pulsations correspondantes +omrhp=2*pi*frhp; +omrb=2*pi*frb; +omrhpm=2*pi*frhpm; +omrbm=2*pi*frbm; + +%Données Physiques +sd=352e-4; %Surface de la membrane m2 +V=0.037%(0.395-0.06)^3-0.001; % Volume du caisson clos m3 +Ma=0.181 %masse ajoutée kg + +kb=1.4*1.0135e5/V*sd^2; %Raideur du caison clos N/m + +disp('Détermination HP seul et caisson clos') +Cms1=1/kb*(omrb^2/omrhp^2-1) +%mms1=1/omr^2/Cms +Mms1=1/omrb^2*(1/Cms1+kb) +% frth=1/2/pi/sqrt(0.1353*0.52e-3) +% frm=1/2/pi/sqrt(Cms*mms1) + +disp ('Détermination HP seul et HP + masse') +Mms2=Ma/(omrhp^2/omrhpm^2-1) +Cms2=1/(Mms2+Ma)/omrhpm^2 + +disp('Détermination HP + masse et Hp clos') +Mms3=(kb+Ma*omrhpm^2)/(omrb^2-omrhpm^2) +Cms3=1/(Mms3+Ma)/omrhpm^2 \ No newline at end of file diff --git a/tools/Manulab/fonc_trans_recup.m b/tools/Manulab/fonc_trans_recup.m new file mode 100644 index 0000000..0d4c1e0 --- /dev/null +++ b/tools/Manulab/fonc_trans_recup.m @@ -0,0 +1,23 @@ +function [RI,spec] = fonctrans_recup(filename); +%calcul d'une fonction de tranfert mesurée par l'interface CNACQ +%Sorties : fonction de transfert et réponse impulsionnelle +load (filename); + +% soustraction de la composante continue +DC=mean(sig_mes,1); +sig_mes=sig_mes-DC; +S=size(sig_mes); +NT=S(1); +Freq =logspace(log10(f_min), log10(f_max), NT)'; +excinv=sig_exc(NT:-1:1).*f_min./Freq; +[RI,spec] = fconv(sig_mes,excinv); +plot(sig_mes,'k'); +hold on +plot(sig_exc,'r') +angleexc=unwrap(angle(fft(sig_exc))); +anglemes=unwrap(angle(fft(sig_mes))); +ang=anglemes-angleexc + 2*pi; +figure +plot(ang) + + diff --git a/tools/Manulab/gene_chirp.m b/tools/Manulab/gene_chirp.m new file mode 100644 index 0000000..06001c4 --- /dev/null +++ b/tools/Manulab/gene_chirp.m @@ -0,0 +1,66 @@ +function gene_chirp + +load Parametres_Mesures + +Size = 2^Para_Mesu.Prec ; +Para_Mesu.Tps = (Size/Para_Mesu.Fs) % Tps de Mesure +Time = [0:Size-1]./Para_Mesu.Fs ; % Decalage de la Data.Fmini +Freq = logspace(log10(Para_Mesu.Fmin), log10(Para_Mesu.Fmax), Size) ; +w1 = 2*pi*Para_Mesu.Fmin; +w2 = 2*pi*Para_Mesu.Fmax; +Stimulus = .9 *sin((w1*Para_Mesu.Tps)/log(w2/w1) * (exp(Time'/Para_Mesu.Tps*log(w2/w1))-1)) ; +L = floor(Size/100)*2 ; +Window = flattop(L) ; +Calc_Theo.Stimulus = [Window(1:L/2); ones(Size-L,1); Window(L/2+1:L)].*Stimulus; +Calc_Theo.St_inv = Stimulus([Size:-1:1]) .* (Para_Mesu.Fmin./Freq') ; +Calc_Theo.Freq = Freq'; +wavwrite(Calc_Theo.Stimulus,Para_Mesu.Fs ,16,'chirplog') +% Application du niveau de Mesure +% Calc_Theo.Stimulus = Calc_Theo.Stimulus * 10^(Para_Mesu.Nive/20) ; + +% Calcul de la reponse Impulse Theorique +% Calc_Theo.Parfait.IR = fconv(Calc_Theo.Stimulus, Calc_Theo.St_inv) ; + +% Calcul de la FFT +% Calc_Theo.Parfait.FFT = 20*log10(abs(fft(Calc_Theo.Parfait.IR))) ; + +% Calcul de l'échelle des fréquences +% Calc_Theo.Parfait.Fr = Para_Mesu.Fs/(length(Calc_Theo.Parfait.FFT)) ; +% Calc_Theo.Parfait.Freq = 0:Calc_Theo.Parfait.Fr:Para_Mesu.Fs-Calc_Theo.Parfait.Fr ; + +% Calcul de courbe de reponse avec Fenetrage Tempo +% [Val,Num_Max_Par] = max(abs(Calc_Theo.Parfait.IR)) ; +% Nombres_Ech = round(Para_Mesu.Tps_Fen/1000*Para_Mesu.Fs) ; +% Ech_Min_Par = round(Num_Max_Par-Nombres_Ech) ; +% Ech_Max_Par = round(Ech_Min_Par+2*Para_Mesu.Tps_Fen/1000*Para_Mesu.Fs) ; +% IR_Par_Fen = Calc_Theo.Parfait.IR(Ech_Min_Par:Ech_Max_Par) ; +% Calc_Theo.Parfait.FFT_Fen = 20*log10(abs(fft(IR_Par_Fen))) ; + +% Calcul de l'échelle des fréquences +% Calc_Theo.Parfait.Fr_Fen = Para_Mesu.Fs/(length(Calc_Theo.Parfait.FFT_Fen)) ; +% Calc_Theo.Parfait.Freq_Fen = 0:Calc_Theo.Parfait.Fr_Fen:Para_Mesu.Fs-Calc_Theo.Parfait.Fr_Fen ; + +% Fenetrage tempo des THD +% IR = Calc_Theo.Parfait.IR; +% Decal = round((length(IR)/(2^15*2)*(32610-29865))/1.3);% 30% de marge +% [a,Num_Max] = max(abs(IR)); +% Fen = blackman(Decal*2); Demi_Fen = Fen(1:Decal)'; Num_Debut = Num_Max-Decal; +% Debut = zeros(1,Num_Debut); Nbs_Ones = length(IR)-length(Debut)-length(Demi_Fen); Fin = ones(1,Nbs_Ones); +% Fenetre = [Debut Demi_Fen Fin]'; +% IR_Sans_THD = Fenetre.*IR; +% Calc_Theo.Parfait.IR_Sans_THD = IR_Sans_THD; + +% Calcul de la FFT +% Calc_Theo.Parfait.FFT_Sans_THD = 20*log10(abs(fft(Calc_Theo.Parfait.IR_Sans_THD))) ; + + +save Calculs_Theoriques Calc_Theo + + + + +function [window] = flattop(N) +a1 = -1.93; a2 = 1.29; a3 = -0.388; a4 = 0.028; temp = [1:N]'/N; window = 1 + a1*cos(2*pi*temp) + a2*cos(4*pi*temp) + a3*cos(6*pi*temp) + a4*cos(8*pi*temp); window = window/max(window); + +function [New_sign, Fs] = fconv(Old_sign, Cvfilter, Fs) +X = fft([Old_sign; zeros(length(Cvfilter)-1, 1)]); Y = fft([Cvfilter; zeros(length(Old_sign)-1, 1)]); New_sign = real(ifft(X.*Y));