Skip to content
mohawk2 edited this page Jan 5, 2022 · 15 revisions

Welcome to the PDL wiki. The wiki uses a couple of different approaches and covers a fair amount of information, but should not be your only source for information about PDL. If you are new to PDL, the best places to start reading would probably be one of the PDFs linked in the External Resources section on this page. If you have PDL installed, you may also find some of the demos to be helpful at getting you started.

If you are looking for the proper syntax for a particular function and you have PDL installed, you can type '? func-name' at the perldl prompt and a one to two page summary should pop up. You can find more technical documentation of most everything in the POD docs that come with PDL, which you can access using perldoc.

TOC

Documentation Contents

If you want to get started with the PDL documentation on this wiki, start here:

Getting Started with PDL - (Meant to be) an introduction to all of the major features of PDL.

PDL Cookbook - Short and quick recipes to perform common tasks in PDL. (If you need a recipe or have suggestions for recipes, try sending a message to the mailing list or sign onto the #pdl irc channel at irc.perl.org.)

PDL for Matlab users - a quick reference and migration guide for Matlab people.

PDL for IDL users - a quick reference and migration guide for people who are used to IDL

A Map of PDL Users Worldwide - a quick view of PDL users, where they are and how they use PDL

Plotting with PDL::Graphics::Gnuplot - a tutorial and reference guide for making publication-quality plots and images

Installation Information

PDL can be difficult to install. Fortunately, many operating systems including Mac, Windows, and major flavors of Linux, have pre-compiled binaries that you can install. Check the easy installation page and look for your operating system.

Alternatively, you can install PDL from source or via CPAN. The instructions are not the greatest, but hopefully they will be enough to get you going.

For a more modern installation tutorial see Installing Using cpanm. App::cpanminus (cpanm to its friends) is a new CPAN client which makes installing Perl modules easier in most cases. Even though it is fairly new, it is stable and extremely popular.

External Resources

The following PDF documents are probably the best way for a beginner to learn how to use PDL. Some of the information may be a bit outdated, but almost all of it will be useful if you are just getting your feet wet:

  • Original PDL article in Dr. Dobb's Journal (September 1997).
  • PDL for impatient IDL users. Document by Craig DeForest last updated in 2006. An excellent and fairly brief (20 pages) quick-start guide to PDL, and the most recent of the three external resources. The document is written for users familiar with IDL and a little Perl, but should be useful for anybody who has hacked around with Perl and would like to learn more about PDL.
  • PDL-Scientific Programming in Perl. Book by Karl Glazebrook et al. last updated in 2001. This partially-completed book assumes you know some Perl but covers a lot of basic material in PDL. It has some frustrating holes (such as the empty section entitled explicit threading for complex cases), so if you're looking for an in-depth treatment, be prepared to be frustrated a few times. Also, the book does not cover the use of PDL::NiceSlice, which is a standard idiom these days in PDL. However, it will give you an excellent knowledge of how to use PDL and after reading this you should be able to start using the pod documentation without getting lost.
  • Beginning PDL. Book by Xavier Calbet last updated in 2001 with an introduction to Perl and to PDL. This is a great place to start if you really don't know much about Perl and want to have a decent introduction to Perl before getting to PDL. Unlike most books that I have encountered, Xavier has exercises sprinkled throughout the chapters, with complete solutions at the end of each chapter. Xavier spends a lot of time teaching how you how to use Perl, which makes sense since PDL's major selling point is that it is built upon Perl. Unfortunately, he ran out of steam just as he was getting to discussing PDL, so most of the PDL-specific documentation is weak or missing. Once you've read Xavier's book, you should be able to jump into Karl's book without any trouble.

You may eventually find yourself needing more detailed information than these documents can provide. In that case, check an HTML version of the PDL documentation. And of course, clicking around this wiki should be useful, too (we hope).

Get help, ask a question, or report a bug

There are many places one can ask questions and report bugs regarding Perl modules (including PDL), more than the PDL users and developers can monitor. If you have a PDL question, the best places to find more information are:

  1. the online documentation
  2. the mailing lists
  3. The #pdl irc channel at irc.perl.org. The link will take you to mibbit, an AJAX IRC client that will run straight from your browser.

A question in one of the various fora (including CPAN bug reports and the PDL wiki comments) is not likely to be seen and answered in a timely manner. The PDL community primarily uses the mailing lists for questions and SourceForge for bug reports.

The Mailing Lists offer a great forum for discussing ideas, but not for organizing them. The Developer's Corner is a place for the developers and any other interested PDL folk to flesh-out and organize the directions for future development.

Please use GitHub issues to track "to do" items, not a wiki page.

There is also a Roadmap to see where the project is going.

Editing the PDL Wiki

Meaningful contributions to PDL don't come through the code-base alone. PDL can always use new, more, and updated documentation, which can start with this wiki. If you are interested in helping out with the wiki, check out the PDL Wiki Editors Page.

Alternatives

PDL may not be right for everybody. Fortunately, Perl has many other good math libraries which are worth checking out.

Clone this wiki locally