gpt4 book ai didi

matlab - 将函数发送到matlab函数

转载 作者:太空宇宙 更新时间:2023-11-03 20:18:53 24 4
gpt4 key购买 nike

我正在尝试构建一个 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

所以我试了...

f = @(x) x.^2 + 2 * (x+1).^2;
value = evalFunction(f,x) %value = [97;342]

我是 matlab 的新手,所以非常感谢您的帮助。我一直在做一些研究,并在 stackoverflow 上找到了一些东西,但似乎无法让它工作。我已经看到有其他方法可以做到这一点,但我最终会向 matlab evalFunction 函数添加更多代码,所以我想这样做。谢谢!

最佳答案

Anonymous functionsfunction handles加上数组索引。将 x 作为 2 元素向量,定义和使用您的函数,如下所示:

f = @(x) x(1).^2 + 2 * x(2).^2;
value = evalFunction(f,x) % but you can just do f(x) if that is all you need

但是,如果 evalFunction 除了计算 x 处的 f 之外什么都不做,那么您根本不需要它。只需执行 f(x)

或者,

f = @(x1,x2) x1.^2 + 2*x2.^2;
value = evalFunction(f,x1,x2); % here your function will call it by f(x1,x2)

关于matlab - 将函数发送到matlab函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19237529/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com