Октавно-отрицательная ступенчатая функция

#octave

#октава

Вопрос:

Я пытаюсь написать код для построения функции с отрицательным шагом (функции, которая равна нулю при t *< t и равна определенному значению при t> = t *). Я хотел бы иметь код, в котором я мог бы самостоятельно изменять амплитуду шага и время, в которое выполняется шаг. Я попробовал следующую функцию, но она не подходит для того, что я ищу:

   x = zeros (size (t));
  ind2= t<1000;
  x(ind2)=0;
  ind = t >= 1000 amp; t < inf;
  x(ind) = -20*10^-5;
  endfunction
  

Может ли кто-нибудь предложить мне и ответить? Спасибо

Комментарии:

1. Почему это не подходит? В чем проблема с кодом? Она имеет некоторые избыточности, но должна работать. Обратите внимание, что вы можете писать -20e-5 , вам не нужно этого делать -20*10^-5 .

Ответ №1:

Сработает ли это?

 clear;clf;

## usage: Pristep = Heaviside (t,tstar,amplitude)
##
##
function Pristep = Heaviside (t,tstar,amplitude)
  Pristep=zeros(size(t));Heavisideon=find(t>tstar)
  Pristep(Heavisideon)=amplitude*ones(size(Heavisideon));
endfunction

%% example:

nt=101;t=linspace(-10,10,nt);
plot(t,Heaviside(t,pi,-exp(1)))
  

Комментарии:

1. Вы можете удалить, find и ones : Pristep(t>tstar)=amplitude будет работать.

2. Нет, это не сработало бы, потому что у меня нет пакета, который содержит функцию Heaviside.

3. Извините, функция Хевисайда является частью скрипта, который я вам дал (начиная с трех строк комментариев), вы должны иметь возможность вырезать и вставить то, что я написал, и это будет выполняться как есть.