2015-03-12 2 views
0

Я определил структуру данных data с 7 полями. Два из полей как:Matlab: изменение одного поля определенной структуры в другой используемой функции

n = 4; 
data = struct(); 
data.Aeq = zeros(n); 
data.beq = zeros(n,1); 
m =3; 

Теперь, есть еще одна функция ul(data,m), что Я передаю data и m в качестве входов. Внутри ul(), я доработаю один компонент матрицы Aeq как:

data.Aeq(m,m) = 1; 

после запуска всего кода, когда я проверяю data.Aeq он по-прежнему нулевой матрицы в то время как я модифицировал на компоненте. Я делаю что-то неправильно?

ответ

3

Переменные, модифицированные внутри функции, не изменяются вне функции. Вы должны возвращать данные в качестве вывода функции ul. Например:

function data=ul(data,m) 
data.Aeq(m,m) = 1 
end 

n = 4; 
data = struct(); 
data.Aeq = zeros(n); 
data.beq = zeros(n,1); 
m =3; 

data = ul(data,m) 

data.Aeq должно быть изменено правильно.

+0

Большое спасибо за ответ! – Royeh