在 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)
(integrate
将 function 作为参数,而不是表达式)。而且集成这种功能不是很简单吗...?
是的,我必须从房间的一端走到另一端,@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语言使用pROC包绘制ROC曲线实战:roc函数计算AUC值plot.roc函数绘制ROC曲线添加置信区间为回归模型中的每个因子绘制ROC曲线并在同一个图中显示出来