我需要解决两种类型的问题,我们有两个变量f(x,y)的函数: 一个是x,y是具有相同长度的向量,如何评估每个(x_i,y_i)的函数。在第一维中,它只是f(x)。如何在二维中实现这一点。
另一个是由x和y形成的网格的每个点的评估值,即, 评估每个点(x,i,y_j)的每个(i,j)
答案 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)