Attenuation as a Function of Frequency

60 views (last 30 days)
I am wondering if anyone has any experience moddelling how attenuation of a material. I have made an attempt but my attenuation is decreasing when I think it should be increasing.
In the frequency domain I divide the back wall of my material by the front wall of my material and then work out the attenuation coefficient and plot this against the frequency. I expect attenuation to increase with frequency but it is somehow the opposite. I get this might be a very specific topic but if anyone has done anything similar, any help would be appreciated. Even if there is another method to model the attenuation, I would love to know.
%% Attenuation Calculations
sample_thickness= 0.01; % Distance the wave Propagates through the structure 10cm
d = 2*sample_thickness; % Wave travels twice the distance
A_omega = back_wall_frequency_spectrum./front_wall_frequency_spectrum; % Attenuation coefficient
alpha = (log(A_omega)*-1)/d;
% Equivalent to full width half maximum
i = find(front_wall_frequency_spectrum == max(front_wall_frequency_spectrum),1,'first');
freq_mag_drop = frequency(1,i)/(10^(6/20));
j = find(frequency>=frequency(1,i)-freq_mag_drop,1,'first');
k = find(frequency>=frequency(1,i)+freq_mag_drop,1,'first');
figure()
plot(frequency(1, j:k)/1e6, alpha(1, j:k))
grid
xlabel('Frequency (MHz)')
ylabel('Attenuation (Db/mm)')
title('Attenuation Vs Frequency')
% Full range to 20 MHz
figure()
plot(frequency/1e6, alpha)
xlim([0 20])
grid
xlabel('Frequency (MHz)')
ylabel('Attenuation (Db/mm)')
title('Attenuation Vs Frequency')

Accepted Answer

Star Strider
Star Strider on 9 Apr 2022
I am not exactly certain what you are diong, however the procedure described, ‘In the frequency domain I divide the back wall of my material by the front wall of my material’ seems to me to be the transmission of whatever you are putting through it (sound, rf, or something else) so it would be perfectly logical that the transmission is lower at higher frequencies. That is actually the attenuation you are seeing. (Dividing the output spectrum by the input spectrum is essentially how a transfer function would be calculated.)
I generally work with transmission (usually with respect to a filter), not attenuation. However since the inverse of transmission is attenuation, perhaps taking the inverse of the plotted spectra will produce the attenuation plot.

More Answers (1)

Abhishek Saini
Abhishek Saini on 12 Jun 2022
Edited: Abhishek Saini on 12 Jun 2022
Hi Dave,
I think you already have obtained the answer, but I stumbled on this post and want to comment.
Attenuation can be caluclated by dividing the (frontwall reflection) with backwall reflection. Therefore, attenuation in frequency domain can be calculated as,
% spec1 = first reflectuon spectrum
% spec2 = second reflectuon spectrum
% in your case spec1 = front_wall_frequency_spectrum and spec2=back_wall_frequency_spectrum
att_ratio = log(spec1./spec2); % no unit
att_ratio_dB =20*log10(spec1./spec2); % Unit: dB
att_ratio_dBpermm=amp_ratio_dB/(d); % Unit: dB/m
att_ratio_neperpm = log(spec1./spec2)./(d); % Unit: neper/m
Hope this helps.
Abhishek

Categories

Find more on Graphics Performance in Help Center and File Exchange

Products


Release

R2021b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!