2014-11-06 2 views
0

Я пытаюсь построить функцию рампы в MATLAB. У меня есть следующие функции для моей рампы:Функция рампы участка

function [ y ] = ramp(x) 
    y=zeros(size(x)); 
    y(x>=0)=linspace(0,x(end),length(x(x>=0))) 
end 

Но, я хочу, чтобы иметь похожий эффект, как мой шаг функция

syms x 
ezplot(5*heaviside(x-1), [-10, 10]) 

Когда я использую этот код:

syms x 
ezplot(5*ramp(x-1), [-10, 10]) 

Когда я делаю (x-1), кажется, что вы ошибаетесь, что это невозможно, могу ли я попросить некоторые modificaitons ?:

Cannot prove '0 <= x - 1' literally. To test the statement mathematically, 
use isAlways. 
+1

Не нужно использовать 'ezplot', просто используйте' plot'. – David

ответ

0

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

x = linspace(-10,10,100); 
plot(x, 5*ramp(x-1)) 

В качестве альтернативы, вы можете переписать ramp как функцию символической переменной:

function y = symbramp(x) 
    y = (x+abs(x))/2; 
end 

и сюжет его, как вы делали с Хевисайда:

syms x 
ezplot(5*symbramp(x-1), [-10,10]) 
Смежные вопросы