Function 指向MATLAB函数的指针?

Function 指向MATLAB函数的指针?,function,matlab,for-loop,switch-statement,Function,Matlab,For Loop,Switch Statement,所以我在MATLAB中有一个for循环,其中一个向量x将通过一个函数,比如cos(x)。^2,或者一个不同的选择,比如sin(x)。^2+9.*x。用户将在for循环之前选择要使用的函数 我的问题是,我不希望循环检查用户在每次迭代中选择的内容。有没有一种方法可以使用指向函数(用户定义或其他)的指针,每次迭代都会自动使用 顺便说一下,这是在脚本中,而不是函数中 谢谢您可以使用。对于您的示例(使用循环在所有可用函数上运行): 您可以尝试以下方法: userChoice = 2; switch us

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

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

顺便说一下,这是在脚本中,而不是函数中

谢谢

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


您可以尝试以下方法:

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

谢谢,可以给函数指定一个实际名称而不是列表号吗?是的,您可以用名称(作为字符串)设置另一个单元格,
functionName={fun1,fun2}
,并使用
开关
/
case
语句,或者使用
strcmp(userProvidedName,fun1)
语句的
if/else
语句。谢谢大家,这就是所谓的“内联”函数吗?另外,如果函数不止一行呢?没问题?@Learnaholic:这些是匿名函数。如果需要多行,可以像普通的matlab函数一样将函数写入m文件。
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