我想创建一个函数矩阵,但是我想动态生成它。例如:如何动态创建函数矩阵
myMatrix = zeros(3);
test = @(x) x*y;
for ii = 1:3
myMatrix(ii) = test(ii);
end
类似的东西产生:@(y) [y, 2*y, 3*y]
我没有访问sym
库。
我想创建一个函数矩阵,但是我想动态生成它。例如:如何动态创建函数矩阵
myMatrix = zeros(3);
test = @(x) x*y;
for ii = 1:3
myMatrix(ii) = test(ii);
end
类似的东西产生:@(y) [y, 2*y, 3*y]
我没有访问sym
库。
您不能创建函数矩阵,但可以创建函数句柄的单元格,例如
cellOfFunctions = {};
for i = 1:3
cellOfFunctions{end + 1} = @(y) y*i;
end
然后你就可以得到每个把手如下(为第一功能手柄):
fh1 = cellOfFunctions{1};
然后用y = 3
执行:
result = fh1(3);
您也可以执行第一个函数作为'cellOfFunctions {1}(value)'等 – Jonas
根据你的目的,你可以在你的例子中生成一个生成矩阵的函数:
>> f = @(y) bsxfun(@times, 1:3, y(:));
>> f(2:5)
ans =
2 4 6
3 6 9
4 8 12
5 10 15
'y'是一个数字,一个矢量还是一个矩阵? – Marcin