在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 但我无法在那个帖子中找到答案。
答案 0 :(得分:3)
对您链接的答案进行微小修改将提供所需的结果:
f = @(x) ones(size(x));
f(x)
的大小将与输入x
的大小相匹配,因为f
会输出与x
大小相同的向量。
答案 1 :(得分:-2)
我找到了一种更好的方法。这表明Matlab是多么愚蠢:
f = @(x) (x-x)+1
试试吧!