用MATLAB实现函数的频谱图做f(t)=sin(2*pi*t)/(pi*t) 的频谱图时 老是提示一句Warning: Divide by zero.(Type "warning off MATLAB:divideByZero" to suppress this warning.怎么才能去除分母为零的情况
来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/08 13:41:45
用MATLAB实现函数的频谱图做f(t)=sin(2*pi*t)/(pi*t) 的频谱图时 老是提示一句Warning: Divide by zero.(Type "warning off MATLAB:divideByZero" to suppress this warning.怎么才能去除分母为零的情况
用MATLAB实现函数的频谱图
做f(t)=sin(2*pi*t)/(pi*t) 的频谱图时 老是提示一句Warning: Divide by zero.
(Type "warning off MATLAB:divideByZero" to suppress this warning.
怎么才能去除分母为零的情况
用MATLAB实现函数的频谱图做f(t)=sin(2*pi*t)/(pi*t) 的频谱图时 老是提示一句Warning: Divide by zero.(Type "warning off MATLAB:divideByZero" to suppress this warning.怎么才能去除分母为零的情况
方案一、这个函数在t=0处的极限是f(0)=2*pi*cos(2*pi*0)/pi=2;
故,算完之后,把t=0的点的f值替换掉就可以了.
[m,n]=find(t==0)
f(m,n)=2;
方案二、实际上,这是个辛格函数(sinc function),可以用sinc函数代替,matlab中sinc的定义为:
y = sin(pi*x)/(pi*x) if x = 0
= 1 if x == 0
所以,这里f(t)=2*sinc(2*t),就不会提示零点了
命令写为:
f=2*sinc(2*t);
方案三、关系运算运用之--求近似极限,修补图形缺口.(张志涌《精通matlab 6.5版》里面一个例子),这个方法可以用于不仅限于这个问题的方案,不过这个方案只是用于显示的结果不会去掉警告点而在图上产生缺口,不是个精确的方法,可以运行下面的命令看看效果
t=-2*pi:pi/10:2*pi;
y=sin(t)./t;
tt=t+(t==0)*eps;
yy=sin(tt)./tt;
subplot(1,2,1),plot(t,y),axis([-7,7,-0.5,1.2]),
xlabel('t'),ylabel('y'),title('残缺图形')
subplot(1,2,2),plot(tt,yy),axis([-7,7,-0.5,1.2])
xlabel('t'),ylabel('yy'),title('正确图形')
推荐第二个方案