matlab不允许sinc(0)
我试图在同一个图上绘制这两个图,但matlab返回错误“不能被零除”,并引用sinc为0。matlab不允许sinc(0),matlab,plot,symbolic-math,Matlab,Plot,Symbolic Math,我试图在同一个图上绘制这两个图,但matlab返回错误“不能被零除”,并引用sinc为0。 我不知道该怎么做bcsinc(0)=1,我不理解这个问题 我的代码: syms x ezplot(heaviside(x+1) - heaviside(x-1), [-2, 2]) hold t=-2:0.1:2; syms k r=symsum( ((sinc(k/2)/2)*exp((1i)*k*pi*(t/2))), -1,1); plot(t,r) ??? Err
我不知道该怎么做bc
sinc(0)=1,我不理解这个问题
我的代码:
syms x
ezplot(heaviside(x+1) - heaviside(x-1), [-2, 2])
hold
t=-2:0.1:2;
syms k
r=symsum( ((sinc(k/2)/2)*exp((1i)*k*pi*(t/2))), -1,1);
plot(t,r)
??? Error: File: aa.m Line: 6 Column: 18
Unexpected MATLAB expression.
Current plot held
??? Error using ==> mupadmex
Error in MuPAD command: Division by zero [_power];
during evaluation of 'sum::sum'
Error in ==> sym.symsum at 74
r = mupadmex('symobj::map',f.s,'symobj::symsum',x.s,a.s,b.s);
Error in ==> aa at 6
r=symsum( ((sinc(k/2)/2)*exp((1i)*k*pi*(t/2))), -1,1);
问题:
syms x
ezplot(heaviside(x+1) - heaviside(x-1), [-2, 2])
hold
t=-2:0.1:2;
syms k
r=symsum( ((sinc(k/2)/2)*exp((1i)*k*pi*(t/2))), -1,1);
plot(t,r)
??? Error: File: aa.m Line: 6 Column: 18
Unexpected MATLAB expression.
Current plot held
??? Error using ==> mupadmex
Error in MuPAD command: Division by zero [_power];
during evaluation of 'sum::sum'
Error in ==> sym.symsum at 74
r = mupadmex('symobj::map',f.s,'symobj::symsum',x.s,a.s,b.s);
Error in ==> aa at 6
r=symsum( ((sinc(k/2)/2)*exp((1i)*k*pi*(t/2))), -1,1);
对sinc使用此替代定义:
ssinc=@(X)(1./(gamma(1+X).*gamma(1-X)))
syms x
ezplot(heaviside(x+1) - heaviside(x-1), [-2, 2])
hold
t=-2:0.1:2;
syms k
r=symsum( ((ssinc(k/2)/2)*exp((1i)*k*pi*(t/2))), -1,1);
plot(t,r)
此代码使用sinc函数的替代定义:
(来源:)另一种解决方案,我没有使用gamma函数的替代定义,而是添加了一个修正来重新定义x=0点
原始函数有一个0/0的情况,我使用一个校正函数重新定义了它,校正(0)=1,否则校正(1)=0。这将在sinc(0)处的功能更改为1/1
编写键入sinc
并告诉我们出现了什么。Matlab信号处理工具箱为输入0
提供1
,因为它应该在Matlab中返回sinc(0)1。问题是Matlab的符号sinc
函数为输入0提供NaN
,而不是1
。看看如果你看一下sinc.m,错误会变得很明显。对于sym类型的输入参数,特殊规则“i=find(x==0);”永远不会成功。这将导致零的nan
,而不是1。@LuisMendo:没有符号的sinc
,即sym/sinc
。非重载函数不能保证工作(特别是在这种情况下,因为它是工具箱的一部分),MuPAD也似乎没有函数的版本。看起来像是一个可以作为功能请求提交的东西…+1嘿,非常聪明!你是从哪里得到sinc的定义的?我在德语维基百科页面上找到了sinc函数的定义,但由于某种原因,我现在无法访问维基百科。可能您也可以在英文页面上找到定义。@Daniel-我试图将域从(-1,1)更改为(-7,7)或其他包含0的域,但它不起作用。仅在(-1,1)上。我是否遗漏了什么?我找到了另一个解决方案,希望这能解决所有问题。