0

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

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

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

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

f  = @(x) 1;

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

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

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

诚然,这类似于 matlab 常量匿名函数仅返回一个值而不是数组 ,但我无法在该线程中找到答案。

4

2 回答 2

3

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

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

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

于 2015-11-22T19:19:41.313 回答
-2

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

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

尝试一下!

于 2017-12-08T20:41:19.020 回答