所以我在 MATLAB 中有一个 for 循环,其中一个向量 x 将通过一个函数,比如 cos(x).^2,或者另一个选择,比如 sin(x).^2 + 9.* X。用户将在 for 循环之前选择他想要使用的那些函数。
我的问题是,我不希望循环检查用户在每次迭代中选择的内容。有没有办法使用指向函数的指针(用户定义的或其他方式),每次迭代都会自动使用?
顺便说一句,这是在脚本内部,而不是函数。
谢谢
所以我在 MATLAB 中有一个 for 循环,其中一个向量 x 将通过一个函数,比如 cos(x).^2,或者另一个选择,比如 sin(x).^2 + 9.* X。用户将在 for 循环之前选择他想要使用的那些函数。
我的问题是,我不希望循环检查用户在每次迭代中选择的内容。有没有办法使用指向函数的指针(用户定义的或其他方式),每次迭代都会自动使用?
顺便说一句,这是在脚本内部,而不是函数。
谢谢
您可以使用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
您可以尝试以下方法:
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