繁体   English   中英

在Matlab中绘制sin(x)/(x)

[英]Plotting sin(x)/(x) in Matlab

我有正确绘制sin(x)/(x)的问题。 特别是当x = 0时,在Matlab中返回NaN。 然而,当应用L'Hôpital规则时,实际值是y = 1.我的问题是如何进入y矩阵并改变NaN。 我为可能的方法进行头脑风暴的是创建一个For循环来扫描y矩阵的NaN。

x = [-10:0.5:10]
y = sin(x)./(x);
plot(x,y), axis([-10 10 -1 1.5])

sin(x)/ x的情节

您正在寻找的功能是fplot

x = [-10, 10];        %Range
y = @(x) sin(x)./x;   %Function
fplot(y, x);

产量

作为对原始问题的回答,如何一般地访问nans,简单的y(isnan(y)=某些东西应该有用。所以在这种情况下,

x = [-10:0.5:10]
y = sin(x)./(x);
y(isnan(y))=1; 
plot(x,y), axis([-10 10 -1 1.5])

在C我用过这个:

#define SINC_EPS (1e-6)
// for small x, 
//  missing sinc terms start with pow(x,4)/120, and value close to 1, so negligeable in doubles    
double  sinc( double x)
{       return fabs(x) < SINC_EPS ? 1.0 - x*x/6.0 : (sin(x)/x);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM