如何评估matlab中每个点的函数

时间:2015-04-16 04:28:17

标签: matlab

我需要解决两种类型的问题,我们有两个变量f(x,y)的函数: 一个是x,y是具有相同长度的向量,如何评估每个(x_i,y_i)的函数。在第一维中,它只是f(x)。如何在二维中实现这一点。

另一个是由x和y形成的网格的每个点的评估值,即, 评估每个点(x,i,y_j)的每个(i,j)

2 个答案:

答案 0 :(得分:0)

对于第一期,你能澄清一下吗?我想我看到了第一个维度的情况,但我不明白你的意思。

对于网格,应该如下解决。 cartprod.m是我自定义的笛卡尔积函数here

% Define Test Data
x = 1:5;
y = 2:4;

% Define Test Function
f = @(x,y) x*y;

% Permutate x/y as a grid
s = sortrows( cartprod(x,y) , 1 );

% Apply function for each permutation
a = arrayfun( f, s(:,1), s(:,2) );

% Reshape into matrix
M = reshape( a, 5, [] )   % Solution here

如果我误解了,请告诉我,请为我澄清问题的前半部分!

答案 1 :(得分:0)

<强> 1

除了其他解决方案之外,如果使用矢量属性定义函数,其余部分将很容易。

示例:

function f = myfunc(x)
%% x is a vector or matrix including y,z,.. vectors
%
f = (1 + ((x(:,1) + x(:,2) + 1).^2);

然后轻松评估您的功能如下:

X = [1 1;2 3;1 -1];    % consider this your input data
f(X);

<强> 2

此外,如果您不想单独定义它,也可以在现场定义该功能:

f = @(x)(1 + ((x(:,1) + x(:,2) + 1).^2);
f(X)