在 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
试试吧!
在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
试试吧!