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

我试图在同一个图上绘制这两个图,但matlab返回错误“不能被零除”,并引用sinc为0。
我不知道该怎么做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)上。我是否遗漏了什么?我找到了另一个解决方案,希望这能解决所有问题。