Matlab 如何使用匿名函数实现不同操作的矢量输入/输出?

Matlab 如何使用匿名函数实现不同操作的矢量输入/输出?,matlab,function,anonymous-function,Matlab,Function,Anonymous Function,假设我想创建一个匿名函数,它执行以下操作 f: [a, b] -> [a^2, b/2] 由于a和b上的操作不同,我一直无法弄清楚如何操作。这在matlab中是可能的吗?我的函数将具有约束条件查看matlab匿名函数帮助查看部分,我认为您可以执行类似下面代码的操作 第二次编辑结果表明,如果您使用deal(如所给)或取消对匿名函数的引用,则可以得到相同的结果 crazyfunction=@(a,b) {(a^2),(b/2)}; [x y]=crazyfunction(a,b); 快速脏

假设我想创建一个匿名函数,它执行以下操作

f: [a, b] -> [a^2, b/2]

由于
a
b
上的操作不同,我一直无法弄清楚如何操作。这在matlab中是可能的吗?我的函数将具有约束条件查看matlab匿名函数帮助查看部分,我认为您可以执行类似下面代码的操作

第二次编辑结果表明,如果您使用deal(如所给)或取消对匿名函数的引用,则可以得到相同的结果

crazyfunction=@(a,b) {(a^2),(b/2)};
[x y]=crazyfunction(a,b);
快速脏测试表明,这不会给出语法错误

>> f = @(x,y)  {x^2, y/2};
>> f(2,2)

ans = 

    [4]    [1]
EDIT启动matlab查看我的原始答案是否有效,看起来不太像(请参阅第二次编辑,您需要使用{})

您可以将两个匿名函数菊花链连接在一起,使a和b成为匿名函数c的一部分,或者有效地使用匿名函数的结构,如下所示

crazyfunction={@(a) (a^2); @(b) (b/2);}
[crazyfunction{1](7) crazyfunction{2}(9)]
ans = 
    49.0000     4.5

由于具体的限制,它必须是这样的:

f = @(x) [x(1)^2, x(2)/2];

您不能以任何其他方式在匿名函数中显式定义输出。

尽管您已经接受了您的问题,但实际上看起来您正在使用以下方法寻找此解决方案:

返回:

u =
     4
v =
     1

谢谢,这正是我想要的(我怎么没想到呢?:D)谢谢你的灵感。我知道我在寻找关于细胞阵列的东西
u =
     4
v =
     1