如何动态创建函数矩阵

时间:2014-02-10 04:19:25

标签: matlab function dynamic

我想创建一个函数矩阵,但是我想动态生成它。例如:

myMatrix = zeros(3);
test = @(x) x*y;
for ii = 1:3
    myMatrix(ii) = test(ii);
end

生成类似的内容:@(y) [y, 2*y, 3*y]

我无法访问sym库。

2 个答案:

答案 0 :(得分:3)

你不能建立一个函数矩阵,但你可以创建函数句柄的单元格,例如

cellOfFunctions = {};

for i = 1:3
    cellOfFunctions{end + 1} = @(y) y*i;
end

然后您可以按如下方式获取每个句柄(对于第一个函数句柄):

fh1 = cellOfFunctions{1};

然后使用y = 3

执行它
result = fh1(3);

答案 1 :(得分:1)

根据您的目的,您可以创建一个函数来生成示例中的矩阵:

>> f = @(y) bsxfun(@times, 1:3, y(:));
>> f(2:5)
ans =
    2     4     6
    3     6     9
    4     8    12
    5    10    15