如何写MATLAB指示功能(How to write indicator function in m

2019-09-29 07:08发布

我MATLAB的新用户,我想解决以下问题:

我想建立一个分段常数函数ff应该像一个匿名函数f=@(t)1[0,0.25)(t) 然而,间隔为分段常数函数的数量是不固定的一般。 相反,分段间隔取决于用户输入。

例如,如果一个进入如图4所示,分段间隔变

[0,0.25),[0.25,0.5),[0.5,0.75)和[0.75,1)

然后

F = @(t)的A1 * 1 [0,0.25)(T)+ A2 * [0.25,0.5)(T)+ A3 * 1 [0.5,0.75)(T)+ A4 * 1 [0.75,1)(吨);

如果一个进入5而,分段间隔变

[0,0.2),[0.2,0.4),[0.4,0.6),[0.6,0.8)和[0.8,1)

是否有解决这个问题什么好的方法?

Answer 1:

假设加权A1,...,AK已经被定义,你可以用下面的办法:

%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];
%define f
f=@(t)APadded(find(t<ranges,1,'first'))

结果:

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;


文章来源: How to write indicator function in matlab