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 теперь должен быть корректно изменен.