Matlab中分段函数图中的间隙

时间:2010-12-31 04:52:22

标签: matlab gaps-in-visuals piecewise

我想绘制分段函数,但我不希望出现任何间隙

在接合处,例如:

t=[1:8784];

b=(26.045792 + 13.075558*sin(0.0008531214*t - 2.7773943)).*((heaviside(t-2184))-(heaviside(t-7440)));

plot(b,'r','LineWidth', 1.5);grid on

不应出现任何差距 三个区间之间的情节,但它们确实如此。

我希望图表能够无间隙地继续使用。

有关如何实现这一目标的任何建议。

提前致谢。

修改
实际上,我的目标是找到下图中黄色的载体功能。我将整个区间分成3个区间:1 - 常数2 - 正弦3 - 常数,然后我想从这三个函数中找到整体函数

alt text

1 个答案:

答案 0 :(得分:2)

当然有“差距”。对于所有t <2184,并且对于所有t> 7440,复合函数同样为零。在该间隔内,关系只能是非零。并且你没有选择在端点处为零的函数,那么你怎么能期望没有“差距”呢?

您的功能在间隔的终点处采用了什么值?

>> t = [2184 7440];
>> (26.045792 + 13.075558*sin(0.0008531214*t - 2.7773943))
ans =
       15.689       20.616

所以看看这个帽子功能部分。我会懒惰并使用ezplot。

>> ezplot(@(t) ((heaviside(t-2184))-(heaviside(t-7440))),[0,8784])

alt text

现在,结合它,将它乘以一个trig片段,当然结果在该域之外是相同的。

>> ezplot(@(t) (26.045792 + 13.075558*sin(0.0008531214*t - 2.7773943)).*((heaviside(t-2184))-(heaviside(t-7440))),[0,8784])

alt text

但是如果你的目标是在hat函数中的两个选定点上的某种连续函数,则需要选择trig部分,使得它在相同的两个点处为零。数学不是拼写数学。希望你获得连续的功能不会这样。

你真正的问题是如何选择内部片段(片段)作为最终结果是连续的?如果是这样,那么我们需要知道为什么你在那里选择了任意常数。当然这些数字,{26.045792,13.075558,0.0008531214,2.7773943}都必须对你有一些意义。如果它们很重要,那么我们怎样才能使结果成为连续的函数呢?

也许,我只是在这里猜测,你想要一些其他的结果,这样的功能在这些界限之外不是相同的零。也许你希望在这些点之外推断为常数函数。但是为了帮助你,你必须帮助我们。