将标量输入推广到用户定义的函数的数组输入

时间:2016-10-14 21:39:59

标签: arrays matlab

round函数可以采用标量并对其进行操作。然而,它也可以采用阵列并以预期的方式对其进行操作。

>> round(2.3)

ans =

     2

>> round([2.3,3.4])

ans =

     2     3

我同样有一个功能,希望它能够在""预期""数组输入的方式。它适用于标量输入。我可以运行一个for循环并在数组的每个元素上评估我的函数,但我还有哪些更智能的方法?

为了进一步具体化,我有:

function [a,b]=func(c,d,e,f)

我有d,e,f但我想将函数评估为c的几个值: -

g=[];
for i=1:10
    [a,b]=func(c(i),d,e,f);
    g=[g;[a,b]];
end

我不完全确定如何申请arrayfun,但我相信这是我应该使用的。

1 个答案:

答案 0 :(得分:0)

您要找的是 arrayfun 功能。 以下是文档:http://www.mathworks.com/help/matlab/ref/arrayfun.html

说,我有这个功能:

function res = myTest(a,b)
size(a) % for checking that we work on each element
res = a+1;
res = res +b;

我有一个矩阵 A

A = magic(3);

我想将 myTest 应用 a 等于 A

中的每个元素
A1 = arrayfun(@(x) myTest(x,2),A)

x 被逗号后声明的数组元素替换)