Attenuation as a Function of Frequency

26 ビュー (過去 30 日間)
David Harra
David Harra 2022 年 4 月 9 日
編集済み: Abhishek Saini 2022 年 6 月 12 日
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');
plot(frequency(1, j:k)/1e6, alpha(1, j:k))
xlabel('Frequency (MHz)')
ylabel('Attenuation (Db/mm)')
title('Attenuation Vs Frequency')
% Full range to 20 MHz
plot(frequency/1e6, alpha)
xlim([0 20])
xlabel('Frequency (MHz)')
ylabel('Attenuation (Db/mm)')
title('Attenuation Vs Frequency')


Star Strider
Star Strider 2022 年 4 月 9 日
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.

その他の回答 (1 件)

Abhishek Saini
Abhishek Saini 2022 年 6 月 12 日
編集済み: Abhishek Saini 2022 年 6 月 12 日
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.




Community Treasure Hunt

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

Start Hunting!

Translated by