传递为 MATLAB 中的函数定义的两个变量中的一个变量
Passing one variable of the two variables defined for a function in MATLAB
我在 MATLAB 中有以下函数:
f(x,A) = @(x,A) x'*A*x
其中 A
是一个 n-by-n
矩阵,x
是一个 n-by-1
向量。是否有可能我只将 A
作为实数数组传递给函数,而将 x
保留为符号?换句话说,我不想将 A
的元素输入到 f(x) = @(x) ...
中,而是希望能够在循环中更改 A
的值。
可以这样操作:
>> n = 3;
>> x = sym('x', [n 1]); %// define x as a symbolic n-by-1 vector
>> f = @(x,A) x'*A*x; %'// define function f
>> A = [1 2 3; 4 5 6; 7 8 9]; %// define an n-by-n matrix A
>> f(x,A)
ans =
x1*(conj(x1) + 4*conj(x2) + 7*conj(x3)) + x2*(2*conj(x1) + 5*conj(x2) + 8*conj(x3)) + x3*(3*conj(x1) + 6*conj(x2) + 9*conj(x3))
>> A = [5 6 7; 8 9 10; 10 11 12]; %// now try a different n-by-n matrix A
>> f(x,A)
ans =
x1*(5*conj(x1) + 8*conj(x2) + 10*conj(x3)) + x2*(6*conj(x1) + 9*conj(x2) + 11*conj(x3)) + x3*(7*conj(x1) + 10*conj(x2) + 12*conj(x3))
我现在不知道我是否已经完全理解你,但是在每次循环迭代时重新定义 f
怎么样?
X = [1 2 1 3 1];
for t = 1:5
A = rand(5);
f = @(x)(x'*A*x);
disp(f(X));
end
我在 MATLAB 中有以下函数:
f(x,A) = @(x,A) x'*A*x
其中 A
是一个 n-by-n
矩阵,x
是一个 n-by-1
向量。是否有可能我只将 A
作为实数数组传递给函数,而将 x
保留为符号?换句话说,我不想将 A
的元素输入到 f(x) = @(x) ...
中,而是希望能够在循环中更改 A
的值。
可以这样操作:
>> n = 3;
>> x = sym('x', [n 1]); %// define x as a symbolic n-by-1 vector
>> f = @(x,A) x'*A*x; %'// define function f
>> A = [1 2 3; 4 5 6; 7 8 9]; %// define an n-by-n matrix A
>> f(x,A)
ans =
x1*(conj(x1) + 4*conj(x2) + 7*conj(x3)) + x2*(2*conj(x1) + 5*conj(x2) + 8*conj(x3)) + x3*(3*conj(x1) + 6*conj(x2) + 9*conj(x3))
>> A = [5 6 7; 8 9 10; 10 11 12]; %// now try a different n-by-n matrix A
>> f(x,A)
ans =
x1*(5*conj(x1) + 8*conj(x2) + 10*conj(x3)) + x2*(6*conj(x1) + 9*conj(x2) + 11*conj(x3)) + x3*(7*conj(x1) + 10*conj(x2) + 12*conj(x3))
我现在不知道我是否已经完全理解你,但是在每次循环迭代时重新定义 f
怎么样?
X = [1 2 1 3 1];
for t = 1:5
A = rand(5);
f = @(x)(x'*A*x);
disp(f(X));
end