在 MATLAB 中评估常量匿名函数

Evaluating a constant anonymous function in MATLAB

在Matlab中,我通常会做一些事情

f  = @(x) x.^2;
xx = 0:.1:1;
ff = f(xx);

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

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

f  = @(x) 1;

并且不要更改 xx 和 ff 的代码,那么 xx 仍将是向量,但 ff 不会:它将是双精度数。

这当然很烦人,因为我的代码的 sequel 假设 ff 是一个 11x1 向量,所以只要 f 恰好是常量,我就需要更改我的代码。

所以我的第一个问题是我的代码一开始是否合理。 如果是这样,我应该怎么做才能让它在 "constant f" 情况下工作? 如果没有,我该如何重写?

不可否认,这类似于 matlab constant anonymous function returns only one value instead of an array 但我无法在该线程中找到答案。

对您链接的答案稍作修改即可提供所需的结果:

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

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

我找到了更好的方法。可见Matlab有多蠢:

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

试试吧!