我正在尝试构建一个matlab函数,该函数将评估作为参数发送的函数和向量。我很难想出如何发送函数以便在matlab函数中进行评估。我已经找到了如何在没有函数的情况下完成它,但是在尝试在matlab函数中评估它时有些困惑。以下是我的代码...
这就是我想做的事情...
这就是我想做的事情...
x = [x1 x2]';
f = x(x1)^2 + 2 * (x2)^2
x = [5 10];
f = (5)^2 + 2 * (10)^2 % which I would like to return 225, not a column vector
这是我所拥有的和尝试过的...
x = [5 10]';
% without using a matlab function
% k = 1
% f = x(k)^2 + 2 * x(k + 1)^2; % returns the correct answer of 225
f = x^2 + 2 * x^2 % complains about the scalar 2
f = x.^2 + 2 * x.^2 % returns a column vector [75; 300]
function [value] = evalFunction(f,x)
value = f(x);
我尝试过...
f = @(x) x.^2 + 2 * (x+1).^2;
value = evalFunction(@f,x) %Error: "f" was previously used as a variable
So I tried...
f = @(x) x.^2 + 2 * (x+1).^2;
value = evalFunction(f,x) %value = [97;342]
我是matlab的新手,希望得到一些帮助。我在stackoverflow上做了一些研究,但似乎无法使其正常工作。我知道有其他方法可以实现这个功能,但最终我会在matlab evalFunction函数中添加更多代码,因此我想用这种方式实现。谢谢!
[1 2]^2
和[1 2].^2
的区别。前者尝试在行向量上进行矩阵乘法,会抛出错误;而后者执行逐元素相乘
操作,结果为[1*1 2*2]
或[1 4]
。此外,“函数句柄”确实是您需要了解的内容。@chappj的答案包含了应该有所帮助的链接。 - Floris