diff --git a/acoustics/Problem description.pdf b/acoustics/Problem description.pdf new file mode 100644 index 0000000..6053027 Binary files /dev/null and b/acoustics/Problem description.pdf differ diff --git a/acoustics/Problem description.svg b/acoustics/Problem description.svg new file mode 100644 index 0000000..30bc523 --- /dev/null +++ b/acoustics/Problem description.svg @@ -0,0 +1,597 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + boundary A + boundary B + + + + + + + copper + composite + water + useful reflected wave + incident wave + echo 1 + direct shear reflection + shear echo 1 + + diff --git a/acoustics/Problem_description.png b/acoustics/Problem_description.png new file mode 100644 index 0000000..2cec556 Binary files /dev/null and b/acoustics/Problem_description.png differ diff --git a/acoustics/acousticsOfMirrors.m b/acoustics/acousticsOfMirrors.m new file mode 100644 index 0000000..0eb2578 --- /dev/null +++ b/acoustics/acousticsOfMirrors.m @@ -0,0 +1,72 @@ +function acousticsOfMirrors + % Speed of longitudinal wave propagation in the considered media. + % we take the mean value of all source we found + vlWater = mean([1480,1483,1484,1493,1496]); + vlCopper = mean([4660,4760,4760,4660,3560]); + vlPCB = mean([4726,3070,2100,2460]); + + % Speed of shear wave propagation in the considered media. + % we take the mean value of all source we found + vsWater = vlWater; + vsCopper = mean([2330,2325,2325]); + vsPCB = vlPCB / 2; % hypothese + + % critical angles: + disp (strcat("critical angle of longitudinal transmission Water->Copper : ", num2str(rad2deg(criticalAngleOfTransmission(vlWater, vlCopper))))); + disp (strcat("critical angle of shear transmission Water->Copper : ", num2str(rad2deg(criticalAngleOfTransmission(vlWater, vsCopper))))); + + % hereafter are computed the angles between the propagation direction and + % the normal vector of the planar boundary between media + % naming convention: ("P"|"S") "_" ("R"|"T") "_" is the angle between the normal vector + % of the boundary X and the propagation vector + % of the pressure (P) or shear (S) wave reflected (R) or transmitted (T) by the boundary X for the Nth time + % example: P_R_A_2 is the pressure wave reflected by the boundary A for the second time + + incident = deg2rad(45); + + % Pressure waves + P_T_A_1 = transmittedAngle(vlWater, vlCopper, incident); + P_T_A_2 = transmittedAngle(vlCopper, vlWater, P_T_A_1); + P_T_B_1 = transmittedAngle(vlCopper, vlPCB, P_T_A_1); + + % Shear waves + S_R_A_1 = transmittedAngle(vlWater, vsWater, incident); + S_T_A_1 = transmittedAngle(vsWater, vsCopper, incident); + S_T_A_2 = transmittedAngle(vsCopper, vsWater, S_T_A_1); + S_T_B_1 = transmittedAngle(vsCopper, vsPCB, S_T_A_1); + + % display in octave console + disp(strcat("incident : ",num2str(rad2deg(incident)))); + disp(strcat("P_T_A_1 : ",num2str(rad2deg(P_T_A_1)))); + disp(strcat("P_T_A_2 : ",num2str(rad2deg(P_T_A_2)))); + disp(strcat("P_T_B_1 : ",num2str(rad2deg(P_T_B_1)))); + disp(strcat("S_R_A_1 : ",num2str(rad2deg(S_R_A_1)))); + disp(strcat("S_T_A_1 : ",num2str(rad2deg(S_T_A_1)))); + disp(strcat("S_T_A_2 : ",num2str(rad2deg(S_T_A_2)))); + disp(strcat("S_T_B_1 : ",num2str(rad2deg(S_T_B_1)))); + + return; +endfunction + +% Share of the energy which is reflected at the boundary between two +% media of acoustic impedences "z1" and "z2" +function x = reflectionCoeff (z1, z2) + x = ((z2-z1)/(z2+z1))^2; + return; +endfunction + +% Angle of the transmitted wave meeting the boundary between two +% media of longitudinal wave velocities "v1" and "v2" at an incendent +% angle "incident_angle" +function x = transmittedAngle (v1, v2, incident_angle) + x = asin (sin(incident_angle)*v2/v1); + return; +endfunction + +% returns the critical angle for longitudinal wave transmission. Any +% wave meeting the boundary with a greater angle than those returned +% will be totally reflected +function x = criticalAngleOfTransmission(v1, v2) + x = asin (v1/v2); + return; +endfunction \ No newline at end of file diff --git a/acoustics/envelope_detection.m b/acoustics/envelope_detection.m new file mode 100644 index 0000000..daf026c --- /dev/null +++ b/acoustics/envelope_detection.m @@ -0,0 +1,36 @@ +function [envelope] = envelope_detection (signal, fech, fmin, fmax,option) + +%function to determine the envelope of a the data vector named signal +%fech is the sampling frequency of the data vector in MHz +%we add a filtering of the signal between fmin and fmax in MHz +%option refer to the option of the zero padding process: +%sigzp is filled with 0 from N to Nzeropad if option = 0 +%sigzp is filled with the mean of sig from N to Nzeropad if option != 0 +%%%% +%if signal have an offset, the output envelope won't have, but still need to put +%option != 0 if signal have an offset and want a clean envelope + +if fmin<0 + fmin=0; +endif +if fmax>fech/2 + fmax=fech/2; +endif +if fmax