2013-04-14 4 views
0

Я знаю, что такого типа вопросов задавали много раз раньше, но я не могу понять проблему с моим кодом. Также я новичок в Октаве.индексы индексов должны быть либо целыми положительными, либо логическими

function Z=nat_spline(n, T, Y) 
    for i=0:n-1 
    H(i) = T(i+1) - T(i); 
    B(i) = 6*(Y(i+1) - Y(i))/H(i); 
    end 
    U(1) = 2*(H(0)+H(1)); 
    V(1) = B(1) - B(0); 
    for i=2:n-1 
    U(i) = 2 * (H(i) + H(i-1)) - ((H(i-1))^2/U(i-1)); 
    V(i) = B(i) - B(i-1) - H(i-1)*V(i-1)/U(i-1); 
    end 
    Z(n) = 0 
    for i=n-1:1 
    Z(i) = (V(i)-H(i)*Z(i+1))/U(i); 
    end 
    Z(0) = 0; 
end 

Его короткий код, поэтому, я думаю, было бы легко обнаружить любую ошибку. Большое спасибо за любую помощь.

+0

Возможный дубликат [индексы индексов должны быть либо натуральными положительными целыми числами, либо логическими, общим решением] (http://stackoverflow.com/questions/20054047/subscript-index-must-or-be-real-positive-integers-or-logicals-generic-sol) –

ответ

3

индекс массива начинают с 1 в MATLAB :) ваш Н (я) и В (I) будет представлять собой Н (0) B (0) в первой итерации цикла и что даст вам ошибку так for i=1:n

+0

О, ничего себе. Спасибо хоть – user44273

0

Ну, название говорит ему: если не логики. индексы должны быть строго положительными целыми значениями. Такие вещи, как H(0) или Z(0), не будут работать, поскольку строго положительные целочисленные значения начинаются с 1.

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

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