2014-02-14 3 views
0

Я пытаюсь использовать для петли, чтобы вычислить по следующей формуле: enter image description hereДля петель индексации в Matlab

Однако, так как число элементов для «т» и «тау» различны, я не уверен, как правильно индексировать код.

Это то, что я сделал до сих пор:

t = [0:0.1:15]; 
tau = [0:2:10]; 
dtau = tau(2)-tau(1); 

BB = 4*tau; 
u = 2*t; 
B = zeros(1,length(t)); 

for ii = 1:length(t) 
    for jj = 1:length(tau) 
     B(ii) = B(ii) + BB(jj)*u(ii-jj+1)*dtau; 
    end 
end 

Выработать немного больше - верхний предел интегрирования является «т» в этом случае, так что для каждого В (т) Я хотел бы интегрируем из tau (0) в tau = t. Какие-либо предложения? Спасибо.

+7

Итак ... не можете ли вы просто пойти 'conv (BB, u)'? – Dan

ответ

3

Вы делаете свертку, поэтому просто используйте встроенные функции Matlab, если вы можете i.e. conv. Но вот сдвинутая версия для понимания:

используя данные

t = [0:0.1:15]; 
tau = [0:2:10]; 
dtau = tau(2)-tau(1); 

BB = 4*tau; 
u = 2*t; 
B = zeros(1,length(t)); 

Мы переворачивать u, а затем вставьте его на `BB». Проще всего просто вставить BB с нулями, так что вам не нужно иметь дело с краями:

U = fliplr(u); 
BB = [zeros(1,length(u)-1), BB, zeros(1,length(u)-1)]; 

for ii = 1:length(t) %//This should actually go to 21, I don't feel like working out why right now 
    B(ii) = sum(U.*BB(ii:(ii+length(u)-1))); 
end 
2

Чтобы ответить на ваш вопрос:

Если вы хотите сделать это так, что у вас есть только определить tau внутри цикла for ii = 1:length(t), это все.

Так это будет выглядеть примерно так:

t = [0:0.1:15]; 

u = 2*t; 
B = zeros(1,length(t)); 

for ii = 1:length(t) 

    tau = [0:0.2*ii:ii] 
    dtau = tau(2)-tau(1); 
    BB = 4*tau;  

    for jj = 1:length(tau) 
     B(ii) = B(ii) + BB(jj)*u(ii-jj+1)*dtau; 
    end 
end 

Это, как говорится, я думаю, что комментарий Дэна на месте: если вы не хотите играть с параметрами по себе, вы выполняете простую свертку там.

+0

Также ваш цикл ii установлен в 1, вы можете установить его в 0,1 или любой т-шаг. – McMa

+0

'ii' пробегает индексы' t', поэтому он будет работать так, как ожидалось, если он называет 'B' над' t'. Однако это не будет работать как «B (some_t)». – scenia

+0

Мой плохой, вы прямо там;), но затем он должен определить 'tau' внутри цикла соответственно. – McMa

Смежные вопросы