2016-07-07 2 views
0

Я новичок в Matlab и хотел интегрировать интегрированный векторный раздел.Как сделать неопределенный интеграл вектора и построить его

код я использую для создания вектора выглядит следующим образом:

dt=1/1000; 
t=0:dt:6; 

g(t<=0)=0; 
g(t>=0 & t<=1)=1*t(t>=0 & t<=1); 
g(t>=1 & t<=3)=1; 
g(t>=3 & t<=4)=-1*(t(t>=3 & t<=4)-4); 
g(t>=4)=0; 

мне удалось заставить его работать с diff() операции:

function [h] = diff_plot(g,t) 

dt = 1/1000; 

h = diff(g)*1/dt; 
h(end) = h(end-1); 

subplot(2,1,1); 
plot(t,g); 
grid on; 
xlabel('Zeit in T'); 
title('g(t)'); 

subplot(2,1,2); 
plot(t,h); 
grid on; 
xlabel('Zeit in T'); 
title('h(t)=dg(t)/dt'); 

end 

Но теперь я не знаю, как сделайте это с помощью функции int(). Я всегда получаю ошибку «Неопределенная функция« int »для входных аргументов типа« double ».»

ответ

1

Вы можете использовать cumsum в неопознанном способе функции diff.

Ниже приводится описание функции cumsum.

В = cumsum (А) возвращает интегральную суммы, начиная с начала первого измерения массива в A, размер которого не равен 1.

путем умножения дт, вы можете вычислить интеграл дискретной функции.

int_g=cumsum(g)*dt; 

plot(t,int_g) 
+0

Большое спасибо. Именно то, что я искал :) –

+0

Добро пожаловать ~ – KKS

+0

@KKS Я тоже работаю над интеграцией. У меня два вектора. Один содержит значения, которые необходимо интегрировать, а другой содержит отметки времени, из которых я могу получить 'dt'. Способствует ли этот метод этому? спасибо – controlfreak