我想创建一个函数矩阵,但是我想动态生成它。例如:
myMatrix = zeros(3);
test = @(x) x*y;
for ii = 1:3
myMatrix(ii) = test(ii);
end
生成类似的内容:@(y) [y, 2*y, 3*y]
我无法访问sym
库。
答案 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