2014-02-10 75 views
0

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

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

类似的东西产生:@(y) [y, 2*y, 3*y]

我没有访问sym库。

+0

'y'是一个数字,一个矢量还是一个矩阵? – Marcin

回答

3

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

cellOfFunctions = {}; 

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

然后你就可以得到每个把手如下(为第一功能手柄):

fh1 = cellOfFunctions{1}; 

然后用y = 3执行:

result = fh1(3); 
+1

您也可以执行第一个函数作为'cellOfFunctions {1}(value)'等 – Jonas

1

根据你的目的,你可以在你的例子中生成一个生成矩阵的函数:

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