# Using vector input to anonymous function

52 ビュー (過去 30 日間)
Abdulla Al-Mohannadi 2015 年 9 月 11 日

If a have a function such as:
fptest = @(osf, T) T^2 - log(osf);
fpout(fptest, 2, 3, 4) %evaluates T in the end
In the first line, is it possible to input "osf" as a vector? For example, osf = [1 2 3] so that fpout evaluates fptest for values of T at osf = 1, 2, and 3 in 3 separate runs?
Thanks, Abdulla

サインインしてコメントする。

### 採用された回答

Guillaume 2015 年 9 月 11 日
Anonymous functions are the same as regular functions (except they're restricted to one-liners with no branching or assignment). They accept any type of input argument of any size, scalar, vectors, arrays of numbers, structures, objects, etc. As long as the code of your function can deal with vectors, you can pass it a vector.
In your case, the anonymous function is already capable to handle vector osf since the only function that uses it, log, can:
>> fptest = @(osf, T) T^2 - log(osf);
>> fptest([1 2 3], 0)
ans =
0 -0.69315 -1.0986
Note that I would change the order of arguments, or the order of the formula in fptest, so that they match. It minimises the chance of you calling the function with the arguments reversed:
fptest = @(T, osf) T^2 - log(osf);
%or
fptest = @(osf, T) -log(osf) + T^2;

サインインしてコメントする。

### その他の回答 (1 件)

Abdul Basith Ashraf 2019 年 9 月 6 日
>>y = @(x) 2.2*x/(1+1.2*x);
>>x = linspace(0,1);
>>y(x)
ans =
0.7398
In the above, I tried passing a vector 'x' to a function handle 'y'. I was expecting 'ans' to be a vector mapping each 'x' to 'y(x)' but it returned a single value. Why is that? Also help me out to get my vector output.
Thanks
##### 1 件のコメント-1 件の古いコメントを表示-1 件の古いコメントを非表示
Guillaume 2019 年 9 月 6 日

Your problem has nothing to do with function handles or anonymous functions. It's all to do with the fact that your doing a matrix division / which returns a scalar instead of an element-wise division ./ (which would return a vector).

サインインしてコメントする。

### カテゴリ

Help Center および File ExchangeCreating and Concatenating Matrices についてさらに検索

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by