Пробелы в графике кусочно-зависимых функций в Matlab - PullRequest
1 голос
/ 31 декабря 2010

Я хочу построить кусочную функцию, но не хочу, чтобы появлялись пробелы

на узлах, например:

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

не должно быть никаких пробелов в сюжет между тремя интервалами, но они делают.

Я хочу, чтобы график был непрерывным без пробелов.

Любые предложения о том, как этого добиться.

Заранее спасибо.

EDIT
На самом деле, моя цель - найти несущую функцию, выделенную желтым цветом на рисунке ниже. Я делю весь интервал на 3 интервала: 1-константа 2-синусоидальная 3-константа, затем я хочу найти общую функцию из этих трех функций

alt text

1 Ответ

2 голосов
/ 31 декабря 2010

Конечно, есть "пробелы".Составная функция тождественно равна нулю для всех 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

Теперь, объедините это, умножив на триггер, и, конечно, результат равен нулю вне этогоdomain.

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

alt text

Но если ваша цель - это некая непрерывная функция в двух выбранных точках в функции шляпы, вам нужно выбрать часть трига так, чтобы онаноль в тех же двух точках.Математика не пишется математики.Желание получить непрерывную функцию не сделает ее такой.

Так есть ли у вас реальный вопрос, как выбрать эту внутреннюю часть (сегмент) как единое целое, чтобы конечный результат был непрерывным?Если так, то нам нужно знать, почему вы выбрали там произвольные константы.Конечно, эти числа, {26.045792, 13.075558, 0.0008531214, 2.7773943} все должны иметь какое-то значение для вас.И если они важны, то как мы можем сделать результат непрерывной функцией?

Возможно, и я просто догадываюсь, вам нужен какой-то другой результат, такой, чтобы функция не была идентичнойноль за пределами этих границ.Возможно, вы хотите экстраполировать как постоянную функцию вне этих точек.Но чтобы помочь вам, вы должны помочь нам.

...