我如何绘制一个;“不确定金额”;matlab中的函数?
我的函数只是从-inf到inf的简单求和:f(x)=sum(pi*exp(-x+2pi*j),j=-inf到in) 我尝试过这样做,但出现了一个错误,即“需要一个数字或双可转换参数”我如何绘制一个;“不确定金额”;matlab中的函数?,matlab,plot,Matlab,Plot,我的函数只是从-inf到inf的简单求和:f(x)=sum(pi*exp(-x+2pi*j),j=-inf到in) 我尝试过这样做,但出现了一个错误,即“需要一个数字或双可转换参数” 我认为您的代码编程没有什么问题,但有一个致命的数学缺陷——每x的和是无限的。注意,它只是exp(2*pi*j)乘以pi*exp(x)的和。当j为正时,exp(2*pi*j)的值很大,您尝试将其无限多地相加 当我将公式更改为实际收敛的级数时,代码可以工作,尽管这需要很长时间 x = linspace(-7, 7, 1
我认为您的代码编程没有什么问题,但有一个致命的数学缺陷——每x的和是无限的。注意,它只是exp(2*pi*j)乘以pi*exp(x)的和。当j为正时,exp(2*pi*j)的值很大,您尝试将其无限多地相加 当我将公式更改为实际收敛的级数时,代码可以工作,尽管这需要很长时间
x = linspace(-7, 7, 1000);
h = 10;
syms j;
v_hat = symsum(pi * exp(-abs(x+ 2*pi*j/h) ),-inf, inf);
plot(x, v_hat);
请注意,尽管使用了1000个数据点,但质量并不是很好。通过放弃符号和,您将更快地获得更好的质量。abs(j)>100的项在这里的贡献很小,所以去掉它们,在其余项上使用数字和
h = 10;
x = linspace(-7,7,10000);
[X,j] = meshgrid(x, -100:100);
v_hat = sum(pi * exp(-abs(X+ 2*pi*j/h) ), 1);
plot(x, v_hat);
此外,要认识到该函数是周期为2*pi/h的周期函数。所以你可以设计
函数的一到两个周期,然后想象其余的
h = 10;
x = linspace(-2*pi/h, 2*pi/h, 101);
syms j;
v_hat = symsum(pi * exp(-abs(x+ 2*pi*j/h) ),-inf, inf);
plot(x, v_hat);
看起来您缺少了一个输入参数
symsum
,加上右侧的右括号。此外,你真的想计算出与<代码> j>代码>的总和吗?而不是<代码> x>代码>?是的,j是计数变量,而VHAT是席函数的函数,不能重现错误,你使用MATLAB版本。我使用2014b。但是,如果您尝试执行函数系列,您可能希望将x
作为符号<代码>符号x,j;v_hat=symsum(pi*exp(x+2*pi*j),j,-inf,inf)代码>。这为该函数提供了nan。你可能需要做一些数学上的把戏才能把它做好。嗨@Woodface。实际上,我的函数是$v_hat=symsum(pi*exp(-abs(x+2*pi*j/h)),-inf,inf)$,所以它确实收敛,但似乎仍然不起作用。是的!我的也花了很长时间!所以这不仅仅是我的机器。
h = 10;
x = linspace(-2*pi/h, 2*pi/h, 101);
syms j;
v_hat = symsum(pi * exp(-abs(x+ 2*pi*j/h) ),-inf, inf);
plot(x, v_hat);