How would you draw this in MATLAB?

1 visualización (últimos 30 días)
S. David
S. David el 4 de Mzo. de 2012
Hi,
I have an equation for the absorption coefficient in underwater acoustic communication channel (UWA) as:
alpha=0.11.*(f.^2./(1+f.^2))+44.*(f.^2./(4100+f))+2.75*10^-4.*f.^2+0.003;
where f is the frequency in kHz, and the absorption coefficient is given by dB/Km. I have a paper that plots this relation versus the frequency. It is straightforward as it appears at first, but when I tried to do it myself I have not gotten the same curve, even though the vertical axis in the paper is in dB/Km, which means it is just a direct substitution in the above equation. The question is why?
Thanks in advance
  3 comentarios
Rick Rosson
Rick Rosson el 4 de Mzo. de 2012
Please post your MATLAB code.
Jan
Jan el 4 de Mzo. de 2012
All we know is the formula and that you do not get the "same curve". It might be a typo in the formula, another scaling of log-scaling, different colors or line styles, a post-script problem in the paper, etc. I do not see a chance to guess the source of the differences yet. Please post the necessary details.

Iniciar sesión para comentar.

Respuestas (4)

S. David
S. David el 5 de Mzo. de 2012
This is my code:
clear all;
clc;
f=10^3.*(0:1000);
alpha=(0.11.*((f.^2)./(1+f.^2))+44.*(f.^2./(4100+f))+(2.75.*10^(-4)).*(f.^2)+0.003);
plot(f,alpha)
Thanks

Jan
Jan el 5 de Mzo. de 2012
Unfortunately you still did not describe, which difference you mean. I guess it is the small wobble near to 60Hz.
When I read the explanation about the Figure 1 in this paper, I find at first the above formula and then:
This formula is generally valid for frequencies above a
few hundred Hz. For lower frequencies, the following
formula may be used:
10 log a(f) = 0.002+ 0.11*(f.^2 ./ (1 + f.^2)) + 0.011 * f.^2
I guess, that the author used this formula for the low frequency part.
[EDITED] Check your formula again. It is "4100+f.^2" instead of "4100+f".
  4 comentarios
S. David
S. David el 5 de Mzo. de 2012
Not much difference when I wrote f.^2 instead of f. Now, I need the program to work. Later I can consider more efficient one.
Jan
Jan el 5 de Mzo. de 2012
Ok, not much, but at least enough?
I suggest the standard notation of numbers mainly, because this is faster to write and to read. This is more important than the runtime.

Iniciar sesión para comentar.


G A
G A el 5 de Mzo. de 2012
This gives the same picture as in the paper:
clear;
f=0:1000;%kHz
alpha=0.11.*f.^2./(1+f.^2)+44.*f.^2./(4100+f.^2)+2.75e-4.*f.^2+0.003;%dB/km
figure(1)
clf
plot(f,alpha,'-b')
  3 comentarios
G A
G A el 5 de Mzo. de 2012
multiplying f-array by 1e3 is not necessary
Honglei Chen
Honglei Chen el 5 de Mzo. de 2012
In your original question, it says f is in kHz so that's why you don't need to multiply 1e3.

Iniciar sesión para comentar.


Saed
Saed el 5 de Mzo. de 2012
That is great. What did you do? I mean I tried all of these stuff. Anyway, it is fine now. Thanks a lot.
  2 comentarios
G A
G A el 5 de Mzo. de 2012
1)I have used equation given in the paper. Jan has spotted your mistake. 2)I have removed frequency multiplication by 1e3 you have done.
S. David
S. David el 6 de Mzo. de 2012
Thanks

Iniciar sesión para comentar.

Categorías

Más información sobre MATLAB en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by