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.
谢谢.
您不能在匿名函数中声明变量,因为它必须从表达式构造,即:handle = @(arglist)expr
如果您想要可读性,请q在函数外部定义,如下所示:
q = 3;
whatever = @(x) deal(q * max(x), size(x));
Run Code Online (Sandbox Code Playgroud)