Многие ступенчатые функции в Matlab?

Каков самый простой способ создать функцию кусочного уровня, например следующую

введите здесь описание изображения

Предположим, я знаю высоту (значение y) и длину (по горизонтали) каждого уровня в матрице

>> C=[2,4,1,-3;2,1.5,0.7,2.8]

C =

    2.0000    4.0000    1.0000   -3.0000
    2.0000    1.5000    0.7000    2.8000

т.е. первая строка говорит уровень уровня, а вторая -- длину по горизонтали.

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


person Suzan Cioc    schedule 29.06.2013    source источник


Ответы (2)


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

 x < -5, y = 2 
-5 <= x < 0, y = sin(x) 
 0 <= x < 2, y = x.^2 
 2 <= x < 3, y = 6 
 3 <= x, y = inf 

Итак, как функцию любой переменной x, просто назовите ее так:

y = piecewise_eval(x,[-5 0 2 3],{2,'sin(x)','x.^2',6,inf});
person Community    schedule 29.06.2013

использовать

stairs([0 cumsum(C(2,:))], [C(1,:) C(1,end)]);

Если вы хотите изменить промежуточные значения или построить их по-другому, вы можете получить координаты с помощью

[x, y] = stairs([0 cumsum(C(2,:))], [C(1,:) C(1,end)]);
person Mohsen Nosratinia    schedule 29.06.2013