我想实现一个分段周期函数,它应该在某些间隔内为零,并且在其他地方看起来像一个测试函数(例如exp(a^2/(abs(x)^2-a^2))
forabs(x)< a
和零)。
我试过了
nu = @(x) ((8*10^(-4)/exp(1)*exp(30^2./(abs(mod(x,365)-31).^2-30.^2))).* ...
and((1<mod(x,365)),(mod(x,365)<61)) + ...
(8*10^(-4)/exp(1)*exp(10^2./(abs(mod(x,365)-300).^2-10.^2))).* ...
and((290<mod(x,365)),(mod(x,365)<310)));
分别
nu = @(x) ((0*x).* and((0<=mod(x,365)),(mod(x,365)<=1)) + ...
(8*10^(-4)/exp(1)*exp(30^2./(abs(mod(x,365)-31).^2-30.^2))).* ...
and((1<mod(x,365)),(mod(x,365)<61)) + ...
(0*x).* and((61<=mod(x,365)),(mod(x,365)<=290)) + ...
(8*10^(-4)/exp(1)*exp(10^2./(abs(mod(x,365)-300).^2-10.^2))).* ...
and((290<mod(x,365)),(mod(x,365)<310)) + ...
(0*x).* and((310<=mod(x,365)),(mod(x,365)<365)));
应该表现相同。目的是有一个 [0,365) 的周期,因此是模数。
现在我的问题是,nu(1)=nu(61)=nu(290)=nu(310)=NaN
而且在他们的一个小社区,例如nu(0.99)=NaN
。但是我从指数函数中排除了这些点,这会导致问题。即使我对指数函数使用较小的间隔(例如(2,60)和(291,309)),我也会NaN
在相同的点收到。
有任何想法吗?谢谢指教!