为什么我不能在MATLAB匿名函数中定义变量?

Spa*_*cey 2 matlab function anonymous-function

我必须遗漏一些非常简单的东西,因为这似乎不应该是这么难.

这段代码是正确的:

clear all
whatever = @(x) deal(max(x), size(x));
input = randn(1,1000);
[a b] = whatever(input) 
Run Code Online (Sandbox Code Playgroud)

但是,我真正想做的是这样的事情:

clear all
whatever = @(x) deal(q = 3; q*max(x), size(x));
input = randn(1,1000);
[a b] = whatever(input)    
Run Code Online (Sandbox Code Playgroud)

这为什么会破裂?我不能在函数内定义q?我想使用匿名函数的全部原因是我实际上可以在其中执行多行代码,然后返回一个答案.我想匿名函数的最后一个语句是返回的,但是如何在其中定义变量?我不想在匿名函数的定义之前定义q.

谢谢.

Eit*_*n T 5

您不能在匿名函数中声明变量,因为它必须从表达式构造,:handle = @(arglist)expr

如果您想要可读性,请q在函数外部定义,如下所示:

q = 3;
whatever = @(x) deal(q * max(x), size(x));
Run Code Online (Sandbox Code Playgroud)