Как сделать функцию линейного изменения, которая начинается в точке a и заканчивается в точке b. [А, Ь]. И со значением 0 вне интервала - PullRequest
0 голосов
/ 07 октября 2019

Я хочу построить функцию линейного изменения, которая начинается с точки a и заканчивается в точке b. [a, b]

Я создал код функции линейного изменения, который начинается с 0 и заканчивается в точке b. [0, b].

это код:

hold on
b =2  % time in wich the ramp finish
a=1  %time in which the ramp start
t = [0:0.01:15]';  %timespan of the ramp function
for impAmp = [3 5 10]  %height of the ramp 
function
rampOn = @(t) t<=b;
ramp =@(t) t.*impAmp.*rampOn(t);
plot(t,ramp(t))
end

Но я хочу определить новый код функции линейного изменения, определенной в интервале [a, b]. И значение 0 вне интервала.

Я пробовал этот код. Но это изменило все функции рампы.

hold on
b =2 % time in wich the ramp finish
a=1 %time in which the ramp start
t = [0:0.01:15]';%timespan of the ramp function
for impAmp = [3 5 10]%height of the ramp function
rampOn = @(t) a<t<=b;
ramp =@(t) t.*impAmp.*rampOn(t);
plot(t,ramp(t))
end

1 Ответ

0 голосов
/ 07 октября 2019

В качестве функции у вас есть:

function y=ramp(x,a,b,h)
    y = h/(b-a)*(x-a).*(x>a).*(x<b);
end

В качестве дескриптора функции,

f = @(x,a,b,h) h/(b-a)*(x-a).*(x>a).*(x<b);

В любом случае, определите параметры a, b и высоту h и используйте функцию как хотите:

a = 1; 
b = 4;
h = 7;
x = 0:0.1:5;
y = ramp(x,a,b,h);
plot(x,y)

a = 2; 
b = 2.5;
h = 10;
x = 0:0.1:5;
plot(x,ramp(x,a,b,h))
...