2

所以我在 MATLAB 中有一个 for 循环,其中一个向量 x 将通过一个函数,比如 cos(x).^2,或者另一个选择,比如 sin(x).^2 + 9.* X。用户将在 for 循环之前选择他想要使用的那些函数。

我的问题是,我不希望循环检查用户在每次迭代中选择的内容。有没有办法使用指向函数的指针(用户定义的或其他方式),每次迭代都会自动使用?

顺便说一句,这是在脚本内部,而不是函数。

谢谢

4

2 回答 2

4

您可以使用function_handles。对于您的示例(使用循环在所有可用函数上运行):

x = 1:10; % list of input values
functionList = {@(x) cos(x).^2, @(x) sin(x).^2 + 9*x}; % function handle cell-array
for i=1:length(functionList)
    functionOut{i} = functionList{i}(x); % output of each function to x
end
于 2012-08-29T16:43:18.780 回答
2

您可以尝试以下方法:

userChoice = 2;

switch userChoice
    case 1
        myFun = @(x) sin(x).^2 + 9.*x;
    case 2
        myFun = @(x) cos(x).^2;
end

for k = 1:10
    x(k,:) = myFun(rand(1,10));
end
于 2012-08-29T16:50:21.033 回答