Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 如何避免输出值为无穷大?_Matlab_Communication Protocol_Acoustics - Fatal编程技术网

Matlab 如何避免输出值为无穷大?

Matlab 如何避免输出值为无穷大?,matlab,communication-protocol,acoustics,Matlab,Communication Protocol,Acoustics,我编写了以下代码,根据发送方和接收方之间的距离以及接收方的SNR阈值来计算所需的传输功率。然而,我得到了所需强度(Req_I)和所需传输功率(Req_Pt)的巨大值。如果我在计算传输功率的技术或代码本身中出错,请提出解决方案 致意 Pt=12; %Transmit power in watts spreading=1.5; %Spreading factor f

我编写了以下代码,根据发送方和接收方之间的距离以及接收方的SNR阈值来计算所需的传输功率。然而,我得到了所需强度(Req_I)和所需传输功率(Req_Pt)的巨大值。如果我在计算传输功率的技术或代码本身中出错,请提出解决方案

致意

     Pt=12;                         %Transmit power in watts             
     spreading=1.5;                 %Spreading factor
     f=10;                          %Frequency in Kilo Hz.
     d=0.5;                         %Distance in Kilo Meters.
     NL=47.69;                      %Noise Level in db
     DI=0;                          %Directivity Index
     pi=3.14159265359;  
     SNRth=17;                      %SNR threshold in db

    %absorption=10^((0.002+0.11*(f^2/((1+f^2)+0.011*f^2)))/10); %Absorption factor
     absorption=10^((0.11*(f^2/(1+f^2))+44*(f^2/(4100+f^2))+2.75*10^(-4)*f^2+0.003)/10);
     TL=(d^spreading)*(absorption^d);                           %Transmission Loss
     Req_SL=SNRth+TL+NL+DI;                                     %Required Source Level
     Req_I=((10^Req_SL)/10)*(0.67*10^(-18));                    %Required Intensity
     Req_Pt=Req_I*4*pi;                                         %Required Transmission Power

TL因子的计算可能是错误的,也许你忘了取它的对数

我不知道你的公式是从哪里来的,也不知道你的具体应用。如果您没有正确的公式,可以查看,其中提供了衰减和扩展导致的TL因子的表达式。

检查您的单位

原始文件给出了低频传播的表达式(3),即您使用的表达式,但要求输入单位为kHz,而不是Hz。要么你应该使用

f = 10*1e-3; %frequency in kHz

或者你应该使用公式(2)。还请注意衰减单位为dB/km,因此您也应该转换距离,除非您确实对传播500 km感兴趣。

请注意,无需自行定义
pi
。Matlab默认知道它。
Req_SL=3.4303e+09
,您正在计算
(10^Req_SL)
,因此您将获得
Inf
。双精度元素的最大值约为
10^308
。如果所有数量都使用单位,这将非常有用。这很有可能是您的错误源,因为您的源级别/所需强度非常大。您的吸收表达式应该是:
absorption=10^((0.002+0.11*(f^2/((1+f^2)+0.011*f^2)))/10)我的应用是水声传感器网络。介质是声波。我已经重新检查了公式。这是正确的。这是解释公式的文件。论文第1页的方程式1是计算TL的公式。@ConfusinglyCuriousTheThird.。感谢您的回复…我已经更改了代码(请在我的帖子中检查更改的代码)…我现在没有无穷大,但“Req_Pt”的值仍然太高。我试图找出问题,但没有成功。你的频率是10赫兹还是10000赫兹?是10000赫兹