Цикл в цикле

Форум, посвященный общим вопросам, связанным с MATLAB

Модератор: Admin

Faton_11
Пользователь
Сообщения: 9
Зарегистрирован: Сб ноя 17, 2012 6:49 pm

Цикл в цикле

Сообщение Faton_11 » Пт апр 05, 2013 9:03 pm

Добрый вечер! Почему-то матлаб отказывается считать цикл в цикле (цикл по x внутри большого цикла по l, в коде выделено снежинками). Почему так происходит, ведь на 1-й взгляд все написано логично?

Код: Выделить всё


close all
clear all

for l=1:1000
%________________Вводимые параметры:__________________________

C=4800;
Jr=50e-3;
lsl=48;
JI(l)=(l+lsl)/C;
Jp(l)=2*Jr+2*JI(l);
M=8;
Pb=10e-5;
P(l)=1-(1-Pb)^(l+lsl);
J0=0.0004;

%_____________________Расчет___________________________________
JpI(l)=floor(Jp(l)/JI(l));
if (M-2<JpI(l))
    L(l)=M-2;
else
    L(l)=JpI(l);
end;
   
%**********************************************************
for x=0:L(l)-1
if L(l)*JI(l)<(x+1)*JI(l)+(2*Jr+J0)
    T2x(x)=(x+1)*JI(l)+(2*Jr+J0)+JI(l);
else
    T2x(x)=(x+1)*JI(l)+(((2*Jr+J0)/JI(l))+1)*JI(l)+JI(l);
end;
end;
%**********************************************************

if (Jp<=L(l)*JI(l))
    T2L(l)=L(l)*JI(l)+(2*Jr+J0)+JI(l);
else
    T2L(l)=JI(l)+(2*Jr+J0)+JI(l);
end;

    T11(l)=0;
    for x=0:L(l)-1
        T01(x)=(1-P(l))*P(l)^x*T2x(x);
        T11(l)=T11(l)+T01(x);
    end;
   
T1(l)=T11(l)+P(l)^L(l)*T2L(l);

if (2*Jr-(M-2)*JI(l)>0)
    Jdn(l)=2*Jr-(M-2)*JI(l);
else
    Jdn(l)=0;
end;

Jv(l)=JI(l)+P(l)*T1(l)+(P(l)*P(l)*T2L(l)/(1-P(l)))+Jdn(l);
Ymax(l)=1/Jv(l);
%_________________________График_________________________________
R(l)=(Ymax(l)*l)/C;
%l=l+1;
end;
figure
semilogy(R);

Grizzly
Пользователь
Сообщения: 843
Зарегистрирован: Сб май 28, 2011 2:00 am

Re: Цикл в цикле

Сообщение Grizzly » Пт апр 05, 2013 9:08 pm

У вас ошибка в выражении для T2x(x), x принимает нулевое значение. В MATLAB индексация начинается с единицы.

Faton_11
Пользователь
Сообщения: 9
Зарегистрирован: Сб ноя 17, 2012 6:49 pm

Re: Цикл в цикле

Сообщение Faton_11 » Пт апр 05, 2013 9:15 pm

Так вот в чем дело, огромное спасибо!