我是matlab的新用户,我想解决以下问题:
我想构造一个分段常数函数f
。 f
应该是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)
有没有什么好方法可以解决这个问题?
答案 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;