在MATLAB中评估常量匿名函数

时间:2015-11-22 19:04:34

标签: matlab function-handle

在Matlab中,我通常会做诸如

之类的事情
f  = @(x) x.^2;
xx = 0:.1:1;
ff = f(xx);

因此f是一个函数句柄,xx和ff都是1x11向量。

但是,如果由于某种原因我需要像这样定义我的函数句柄

f  = @(x) 1;

并且不要更改xx和ff的代码,那么xx仍然是一个向量,但是ff将不会:它将是一个双倍。

这当然很烦人,因为我的代码的续集假定ff是一个11x1向量,所以我需要在f恰好是常数时改变我的代码。

所以我的第一个问题是我的代码是否合适。 如果是这样,我应该怎么做才能使它在常规f"案件? 如果没有,我该如何重写呢?

这无疑与之相似 matlab constant anonymous function returns only one value instead of an array 但我无法在那个帖子中找到答案。

2 个答案:

答案 0 :(得分:3)

对您链接的答案进行微小修改将提供所需的结果:

f = @(x) ones(size(x));

f(x)的大小将与输入x的大小相匹配,因为f会输出与x大小相同的向量。

答案 1 :(得分:-2)

我找到了一种更好的方法。这表明Matlab是多么愚蠢:

f  = @(x) (x-x)+1

试试吧!