我可以写在一个班轮以下?
x = [1,3,5]
res = zeros(1,size(x,2));
for i=1:size(x,2);
res(i) = foo(x(i);
end;
假设预期foo的功能不会处理数组。 在我的情况富返回给数组作为参数,即使是标量。
在Python中,例如,它应该是这样的:
x = [1,3,5]
res = [foo(y) for y in x]
我可以写在一个班轮以下?
x = [1,3,5]
res = zeros(1,size(x,2));
for i=1:size(x,2);
res(i) = foo(x(i);
end;
假设预期foo的功能不会处理数组。 在我的情况富返回给数组作为参数,即使是标量。
在Python中,例如,它应该是这样的:
x = [1,3,5]
res = [foo(y) for y in x]
arrayfun
是你所需要的。 例如:
res = arrayfun(@foo, x)
由于foo
总是返回一个标量,上述将工作和res
也将是相同的尺寸的向量x
。 如果foo
返回可变长度的输出,那么你将不得不设置'UniformOutput'
以false
或0
在调用arrayfun
。 然后,输出将是一个cell
阵列。
只需添加到@yoda的很好的答案,而不是使用UniformOutput
,你也可以使用{}
括号:
res = arrayfun(@(t){foo(t)}, x)
此外,在某些情况下, foo
已经量化。
x = 1:10;
foo = @(t)(power(t,2));
res = foo(x);