如何在matlab

时间:2016-05-20 14:53:49

标签: matlab intervals

我是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)(T);

如果输入5,则分段间隔变为

  

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

有没有什么好方法可以解决这个问题?

1 个答案:

答案 0 :(得分:0)

假设已经定义了权重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;