谁能告诉我如何在matlab中为矢量输入编写指标函数?

时间:2016-05-21 12:27:00

标签: matlab

我是matlab和stackoverflow的新用户。我问question关于如何编写指标函数f,问题如下:

" f应该是一个匿名函数,如f = @(t)1 [0,0.25)(t)。但是,分段常数函数的间隔数通常不固定。相反,分段间隔取决于用户输入。"

我很高兴有些用户回答了我的问题。 solution回答如下:

%defines weight vector. for example: a1=1, a2=2, a3=3, a4=4,a5=5
A = 1:5;  
%defines a range vector
ranges = [0:(1/length(A)):1,inf];

%The padding is for handling cases where t<0 or t>=1

APadded = [0,A,0]; 
f=@*(t)APadded(find(t < ranges,1,'first'));

Result
f(0.1) = 1, f(0.3) = 2, f(0.5) = 3, f(0.7) = 4, f(0.9) = 5, f(-0.1) = f(1.1) = 0;

我想稍微扩展一下代码。例如,如果我定义@(X)sun(X),当X的输入是向量时,它将输出作为向量。但是,上述指标结果的解决方案没有。人们可以尝试f([0.1 0.3 0.5 0.7 0.9]),它不会给出1,2,3,4,5。

如何解决这个问题,即使输入是一个向量,它也会给出正确的结果?

1 个答案:

答案 0 :(得分:0)

在创建的f函数上使用Matlab的arrayfun函数:

Theme.Holo.Light.Dialog

结果:

f2=@(t)arrayfun(f,t);

完整代码示例:

f2([-0.1, 0.1,0.3,0.5,0.7,0.9,1.1])

ans =

 0     1     2     3     4     5     0