在 R 中绘制 Haar 函数

Posted

技术标签:

【中文标题】在 R 中绘制 Haar 函数【英文标题】:Plotting Haar functions in R 【发布时间】:2012-05-14 19:46:50 【问题描述】:

我想绘制 Haar 函数,定义为:

h_1_0 = function(t)
    if ((t >= 0) & (t <= 1/2))return(1)
    else if ((t >= 1/2) & (t <= 1))return(-1)
    elsereturn(0)

那么第k个Haar函数为:

h = function(t,n,k)return(2^((n-1)/2) * h_1_0((2^(n-1)) * t - k))

比如我要画h(t,1,1),必须是函数:

 1, if 1<=t<=3/2
-1, if 3/2 <=t<=2
 0, otherwise

那么如何在 R 中绘制具有固定 k 和 n 的第 k 个函数?

【问题讨论】:

【参考方案1】:

为域创建一个序列。根据 k 和 n 使用适当的界限:

x <- seq(.5, 2.5, .001)
plot(x, sapply(x, function(x) h(x,1,1)), pch='.', type='l')

【讨论】:

谢谢!如何集成这个“固定”功能?我只想像常规函数一样使用它。 正如 Ben Bolker 对 BenBarnes 回答的评论中所暗示的那样,您应该在数学上对其进行整合,因为它确实是微不足道的。 因为“琐碎”并不总是意味着“容易”:这(通过积分找到 Schauder 函数的解析公式)绝对是你应该能够做的事情,如果你打算做数字工作,但如果您尝试(并获得本地帮助)但遇到困难,您可以尝试math.stackexchange.com ... 我的问题听起来像“如何在 R 中将多变量函数作为单变量或多变量函数使用?”我想修复计数变量并获得积分、微分等真正的功能。 @Intendia,为了让您的问题“如何与...合作”得到应有的全面关注,请将其作为新问题发布给 SO。【参考方案2】:

如果你可以成功地矢量化你的函数,看起来你可以,你可以使用curve 来绘制它。

使用Vectorize 为您的h 函数创建一个包装器,允许您将向量传递给参数t

Vh <- Vectorize(h, "t")

使用curve绘制矢量化函数

curve( Vh(t = x, n = 1, k = 1), from = .5, to = 5)

【讨论】:

谢谢!但它可以帮助我绘制这个函数。如果我想使用这个函数怎么办,例如我想把这个函数从 0 整合到 1。我有一个错误:Vh(t = x, n = 1, k = 1)' is not a function, character or符号 您可能想问一个单独的问题,或者可能稍微推动一下并在上面编辑您的问题以添加新组件。无论如何,您确实需要准确地展示您尝试做的事情......只是猜测,但您可能想要integrate(Vh,lower=...,upper=...,n=1,k=2)integratefunction 作为参数,而不是表达式)。而且集成这种功能不是很简单吗...? 是的,我必须从房间的一端走到另一端,@BenBolker 打败了我。 integrate(Vh,lower=0,upper=1,n=1,k=1) 另外:如果您使用ifelse 而不是if 对原始h_1_0 函数进行矢量化,您可能甚至不需要Vectorize Haar 函数的积分给出了看起来像三角形的 Schauder 函数。所以我想做一些这样的想法: Schauder_function_n_k = Integral(indicator_function[0,t](u) * h(u,t, k),从 0 到 1) 这意味着我应该为每个 k 和 n 集成 haar 函数。

以上是关于在 R 中绘制 Haar 函数的主要内容,如果未能解决你的问题,请参考以下文章

如何在 R 中绘制函数曲线

在 R 中绘制多个变量函数

R/graphics:在函数中绘制为 PNG

用curve()在R中绘制一个常数函数

R可视化绘制t分布(t Distribution)

R语言使用pROC包绘制ROC曲线实战:roc函数计算AUC值plot.roc函数绘制ROC曲线添加置信区间为回归模型中的每个因子绘制ROC曲线并在同一个图中显示出来