Matlab: изменение одного поля определенной структуры в другой используемой функции

Я определил структуру данных data с 7 полями. Два поля как:

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 это все еще нулевая матрица, пока я изменил компонент. Я делаю что-то неправильно?

1 ответ

Решение

Переменные, измененные внутри функции, не изменяются вне функции. Вы должны вернуть данные как вывод функции 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 теперь должен быть корректно изменен.

Другие вопросы по тегам