Attenuation as a Function of Frequency
51 次查看(过去 30 天)
显示 更早的评论
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')
0 个评论
采纳的回答
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.
0 个评论
更多回答(1 个)
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.
Abhishek
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Spectral Estimation 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!