matlab - 如何在matlab中编写指标函数

标签 matlab intervals

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

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

比如输入4,则分段区间为

[0,0.25), [0.25,0.5), [0.5,0.75) and [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) and [0.8,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;

关于matlab - 如何在matlab中编写指标函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37349914/

相关文章:

algorithm - 用于车牌识别的洪水填充

matlab - 如何在Matlab中存储函数fminunc的迭代次数?

algorithm - 无法找到跨 2D 网格表面的最短路径

r - 与间隔匹配并提取两个矩阵 R 之间的值

javascript 如何循环遍历字符串的字符,使其看起来像仅使用 javascript 的选取框

matlab - MATLAB中两个不同长度数据集的重采样

arrays - 如何在 Matlab 中将数组打印到 .txt 文件?

c++ - boost 间隔矩阵

Kotlin:如何迭代 Joda 区间内的所有日期?

mysql - 预订表中一年的占用天数