【发布时间】:2020-03-16 21:03:05
【问题描述】:
我是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)
有什么好的方法可以解决这个问题吗?
【问题讨论】:
-
请注意,任何使用匿名函数的情况,您也可以使用普通的 Matlab 函数和 @ 运算符来获取函数句柄。例如。
@sum将是函数sum的函数句柄。 -
你能举例说明如何使用@sum 吗?当我在 matlab 中尝试时,它会给出错误消息,我无法以这种方式进行操作。
-
当您执行
f = @(x) x.^2时,您将分配给变量f的函数句柄用于计算x.^2的函数。您还可以使用文本function result = myfunction(x) ... result = x.^2创建一个文件myfunction.m,然后分配f = @myfunction在第二种情况下,f也将分配给计算x.^2的函数的函数句柄。 -
执行
f = @sum然后sum(x)和f(x)将返回相同的结果(这有点像编程语言c中的函数指针)。如果您是 Matlab 或编程新手,这可能会让人感到困惑,您不必担心它而忘记我曾经提到过它。