0

data7 つのフィールドを持つデータ構造を定義しました。2 つのフィールドは次のとおりです。

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

ここで、入力としてandul(data,m)を渡す別の関数があります。内部で、マトリックスの 1 つのコンポーネントを次のように変更します。datamul()Aeq

data.Aeq(m,m) = 1;

コンポーネントを変更している間、コード全体を実行した後、コードdata.Aeqがゼロ行列であることを確認しています。私は何か間違ったことをしていますか?

4

1 に答える 1

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 が正しく変更されるようになりました。

于 2015-03-12T12:39:18.203 に答える