#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. Извините, функция Хевисайда является частью скрипта, который я вам дал (начиная с трех строк комментариев), вы должны иметь возможность вырезать и вставить то, что я написал, и это будет выполняться как есть.