问题标签 [pdl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
perl - Perl PDL 没有按预期工作
我真的不明白 PDL 的输入功能。就个人而言,我一直在使用 rcols 功能来创建 pdls,正如在网络上的各个地方向我推荐的那样。
我有一个这样的输入文件:
其中,我想分配给一个 Piddle。当我将它分配给这样的piddle时,
当我打印@pdls 时,会打印:
这让我觉得它是按列而不是按行来拉我的文件的。真的,看看代码是有道理的。当我将此输出保存到文件时(去掉所有括号后),这就是它的样子。:
当我在新的输入文件上运行相同的脚本时,结果与以前的过程不同:
我不知道它为什么这样做。本质上,我希望能够将我的文本文件读入一个 piddle。有没有人看到我错过了什么,或者能够提供任何解释?
谢谢你的帮助。
pdl - PDL 矩阵混淆
我有一个简单但很大的数据文件。它是神经网络模拟的输出。第一列是时间步长,1..200。第二个是目标词(对于当前的模拟,1..212)。然后有 212 列,每个单词一个。也就是说,在给定特定目标(输入)词的情况下,每一行都有每个词节点在特定时间步的激活值。
我需要做一些简单的操作,例如将每个激活转换为响应强度(exp(constant x activation)),然后将每个响应强度除以响应强度的行总和。在 R 中执行此操作非常慢(20 分钟),而在 perl 中使用传统循环执行此操作更快但仍然很慢(7 分钟),因为稍后的模拟将涉及数千个单词。
看起来 PDL 应该能够更快地做到这一点。我一直在阅读 PDL 文档,但我真的不知道如何进行第二步。第一个似乎就像只选择激活列并将它们放入 $act 一样简单,然后:
$rp = exp($act * $k);
但我不知道如何将每个值除以其行总和。任何意见,将不胜感激。
谢谢!
perl - 使用 replot 的 PDL Gnuplot 和 QT 终端的点限制
在使用 PDL::Graphics::Gnuplot 绘制数据时,我遇到了一个奇怪的效果。似乎,一次只能绘制有限数量的点replot
。
考虑以下示例(15 行,101 个点):
最后仅使用 21 个点,显示所有 15 条线。
首先,我认为只绘制了有限数量的线,但事实并非如此,因为绘制的线数取决于 piddles 的大小。
这是 perl 模块还是 Gnuplot 的限制?有没有办法增加最大点数?这似乎是 Gnuplots qt 版本的问题。用作'x11'
终端不会显示此限制(我测试了 100 行 101 点没有任何问题)。
此外,我在不使用replot
但在单个plot
.
使用此代码,一切正常(即使将行数增加到更大的值)。
所以最后,这似乎是终端replot
功能的问题。'qt'
(GNUPLOT 版本 4.6 补丁级别 6)
perl - 如何检查 Perl 变量是否为 PDL 格式(即是一个 piddle)?
我正在使用PDL。如果给定的变量$foo
可以是哈希引用、数组引用、标量或 piddle(可以为空或 null),我如何判断它是否是 piddle?
pdl - Perl PDL -> GnuPlot -> AutoScale => 95% WhiteSpace?
要绘制的 3 个 XY 数据集:
需要:所有 3 个 XY 数据集都可以自动缩放,就好像它是唯一的数据集一样。期望:“小”,上方/下方空白
跨越整个 Y 范围的错误数据,而不是 Y=0 附近的 ~0 范围
结果:Y 范围 [-10 .. 10]
误差线是图形中间的平线,内容约为 0。在整个 20 个单位的 Y 范围内,只有 [0 .. 1] 有任何数据,因此 95% 是空白。
理想的“自动”缩放:支持“标准偏差”缩放,其中一些“离群”数据点将被推离图表,以更好地显示大量数据。
恰当的例子:错误的 XY 数据。在极端情况下,Y 误差值与平均值相比是巨大的,大约相差 14 sigma。自动缩放将 98% 的数据压缩到零像素内。
如果我计算标准偏差并手动将 yrange=>[$ylo, $yhi] 设置为平均 +- 1 sigma 之类的值,它看起来很有信息。
除了最大/最小或数量级 AUTOSCALE 之外,还有什么方法可以获得合理的比例?
perl - 如何将 PDL 图像转换为 GdkPixbuf
我正在尝试在 Gtk3 应用程序中显示由 PDL(使用 PLplot)生成的图形。当我尝试以下代码时,我看到两个问题:
- $pdlImg 不是 GdkPixbuf 所以 new_from_pixbuf() 不起作用。
- $pdlImg 似乎是空的,因为错误消息将 10x10x3 数组打印为字符串并且它们都是零。
代码:
perl - 关于来自 PDL::GSL::CDF (Perl) 的 gsl_cdf_tdist_P
当 p 值小于 1E-16 时,您能否告诉我如何从 gsl_cdf_tdist_P 函数中获取完整的 p 值?我得到的是 0。
谢谢,伍迪
我的输入值如下:
windows - 安装 Perl 和 PDL
我目前正在尝试 - 安装 perl PDL 失败,因为我想自动化我的一些数据分析和图形生成。
不幸的是,我似乎无法毫无问题地安装必要的模块,更不用说创建一个小脚本来处理我的数据文件了。
我对 Perl 有一些初步的经验,但没什么特别的,我正在使用 Windows 10 x64。
最初我选择了 x64 草莓 perl v5.24 安装,然后是 Astro::FITS::Header、Convert::UU、OpenGL 和 PDL 的 ppm 安装 - 按照此处的说明http://pdl.perl.org/?page =安装。但是,安装 Inline::C 并尝试了 PDL_Book_Latest http://sourceforge.net/projects/pdl/files/PDL/2.4.10/PDL-Book-20120205第 5 页上列出的示例后存在问题.pdf/download没有出现任何图像,也没有图像文件出现在我想搜索的任何位置。回到谷歌,仍然没有找到关于这个问题来源的任何信息,所以我决定回到原点并使用旧版本,希望它会有更好的文档记录。
因此,通过 Windows 安装程序对话框卸载草莓 perl,删除草莓文件夹和包含“草莓”的注册表项。然后使用 Padre IDE v5.14 重新安装 perl - 也许一些调试功能将有助于查明错误。开始安装相同的模块(Astro::FITS::Header、Convert::UU、OpenGL、PGPLOT)。Astro 和 Convert 工作正常,但是 OpenGL 开始抛出关于 ExtUtils::F77 的错误,经过几个小时的搜索,我显然错过了这些错误。我去安装这个模块,它不断给出关于“gfortan”是一个未知命令的错误......我的理解是,PDL 的想法是避免 fortran 和 C,我发现几乎没有关于这个安装问题的信息至今。
所以我决定尝试另一种方法。我从 cpan 安装了 ppm 模块,并通过 ppm 命令重复了初始安装过程。这次我得到:
“在 SOFTPKG 中发现未知元素‘提供’。位于 C:/Dwimperl/perl/site/lib/PPM.pm 第 1462 行。”
所以我的问题如下:
我是否错过了安装过程中的一些关键步骤?我的系统是否真的处理得很糟糕,如果是这样,是否有任何可能的解决方法?我尝试了两个不同版本的事实是否可能会产生可能是该问题根源的路径问题?
任何人都可以提供替代且最好不要太复杂的路线来在 Windows 10 上使用给定的 perl 安装来安装 PDL?
编辑1:
这是我尝试安装 Inline::C 时出现的错误代码,这是 PDL 的明显先决条件
code deleted to make space for updates...
编辑 3:
我在PATH指定的目录中重新安装了GnuWin32,而不是更改PATH,然后再次尝试安装。Inline::C 给出了相同的 'diff' 和 'rm' 错误。所以我运行“cpanm --notest 'package'”来安装 Inline::C 然后 PDL,都说他们成功了。然而,即使使用'--notes' cpanm 也无法安装 OpenGL 和 PGPLOT。
最终目标是能够使用 PGPLOT 中的函数生成图形:例如
但是,如果 PGPLOT 无法安装,这当然不起作用。
编辑4:
尝试了@Dr.Avalange 在 sourceforge https://sourceforge.net/p/pogl/bugs/26/上找到的修复程序,并注意到我似乎有这个文件的多个副本。
这正常吗……?
编辑 5:所以我卸载了 perl,删除了我可以在 %APPDATA%、%USERPROFILE% 和 C:/DWIM 中找到的任何挥之不去的文件,然后运行 ccleaner 以防万一我错过任何东西。
然后我为 Windows 下载了 Strawberry perl 5.24.1 x64 并安装了它。
在此之后,我按照http://pdl.perl.org/?page=install运行了 'cpanm Astro::FITS::Header'、cpanm 'Convert-UU' 和 'cpanm OpenGL' 。这一切都很好。然后我运行“cpanm PDL”,它安装了 Inline、Pegex、Win32::Mutex 和 Module::Compile 依赖项。但是,如果与您之前提到的 Inline::C 有相同的错误。
我之前已经安装了 GetGnuWin32,所以不知道为什么这不起作用。Windows 'Path' 环境(不是 PATH - 根据高级系统对话不存在)被记录为
%USERPROFILE%\AppData\Local\Microsoft\WindowsApps; 在这个目录中,我有 GetGnuWin32 文件夹,它应该已经安装了您提供的链接中的所有软件包,除非我错过了正确安装它的补充步骤?所以我重新下载了 DiffUtils 设置并运行它,安装到 \programfiles(x86) (默认选项)。然后我重新运行'cpanm PDL'。
我仍然收到相同的“差异”错误消息。那么 DiffUtils 是否安装不正确?(我确实在尝试之间和安装后关闭并重新打开了命令行)
编辑 6:
因此,在使用 --notest 安装 PDL 和 PGPLOT 后,我尝试运行以下测试,但失败了。见下文
已经存在目录问题,但我设法将其指向我认为的正确方向。还尝试安装 PLplot 'cpanm' 表示安装成功,但没有 .pm 文件,在另一个目录中只有一个 .pd ,因此使用 PDL::Graphics::PLplot 失败,因为找不到 .pm 文件。
编辑:7所以这次重试ppm install http://www.sisyphusion.tk/ppm/PGPLOT.ppd
似乎有效,因为您提供的解释中的链接不再使用
http://www.kalinabears.com.au/w32perl/pgplot-5.2.2-mingw32.tar.bz2
http: //jrfonseca.home.dyndns.org/projects/gnu-win32/software/ported/patches/pgplot-5.2.2-mingw32.diff.gz
虽然这似乎有效,但没有列出文件的痕迹根据安装的需要,除非他们只是为了这个特定的方法?
最后,再次尝试该示例给出以下结果;没有错误,但也没有图像...
perl - 在 PDL 上向零舍入
我有一个double
混合值(正数和负数)的 PDL(类型)。我想将每个条目四舍五入为零。所以+1.2
变成+1
,+1.7
变成+1
,-1.2
变成,变成-1
,-1.7
变成-1
,
我想过使用int()
,但它不适用于 PDL 类型。
我也可以使用round(abs($x) - 0.5) * ($x <=> 0)
,但不确定如何在 PDL 上使用此逻辑。
指针?
perl - 如何在 PDL 中执行笛卡尔积
我想采用任意一维向量a = [k]和b = [m]并形成有序对矩阵c = [2 xkxm]使得$c->(:,(i),(j)) = [ $a->(i), $b->(j) ]
. 即a和b中的所有有序元素对的集合,也就是笛卡尔积。
当然,我可以使用循环和 [glue] 函数来完成此操作,但这不符合 Perl/PDL 的精神。有没有一种涉及切片、虚拟尺寸和胶水的奇特方法可以让我到达那里?
另外,使用 Math::Cartesian::Product (如在此处回答:在 Perl 中,如何获得多组的笛卡尔积?是作弊!:3 我想要直接的 perl/PDL 并希望在此过程中学到一些东西。