2015-01-29 3 views
1

Say У меня есть следующий код:Matlab неопределенной переменной

[w1, d1]=fit1; 
    for i = 1:10, 
     p = w1*d1+i; 
     C(i,:) = p; 
    end 

[w2, d2]=fit2; 
    for i = 1:10, 
     q = w2*d2+i; 
     D(i,:) = q; 
    end 

Где функция fit1:

function[w1, d1] = fit1 
w1 = rand(1); 
d1 = rand(1); 

и функция fit2:

function[w2, d2] = fit2 
w2 = w1+0.2; 
d2 = d1-0.1; 

Я получаю ошибку: Undefined function or variable 'w1'.

Но параметр w1 определен до того, как fit2 называется так, почему это не работает?

Спасибо!

ответ

5

Это потому, что ваша функция fit2 не знает переменные w1 и d1. Каждая функция имеет собственное переменное пространство, которое состоит из входных аргументов и, конечно же, переменных, определенных внутри этой функции. Функция fit2 не имеет входов, поэтому она не знает никакой переменной. Для того, чтобы программа работала, вы должны изменить fit2 иметь 2 входа (которые вы используете внутри этой функции):

function[w2, d2] = fit2(w1,d1) 
w2 = w1+0.2; 
d2 = d1-0.1; 

И назвать это с его входными аргументами:

[w2, d2]=fit2(w1,d1);