Ini adalah perintah PDL::FAQp yang dapat dijalankan di penyedia hosting gratis OnWorks menggunakan salah satu dari beberapa workstation online gratis kami seperti Ubuntu Online, Fedora Online, emulator online Windows, atau emulator online MAC OS
PROGRAM:
NAMA
PDL::FAQ - Pertanyaan yang sering diajukan tentang PDL
VERSION
Versi FAQ saat ini: 1.004
DESKRIPSI
Ini adalah versi 1.004 dari FAQ PDL, kumpulan pertanyaan umum tentang
PDL - Bahasa Data Perl.
TENTANG KAMI INI DOKUMEN
Q: 1.1 Where untuk menemukan ini dokumen
Anda dapat menemukan versi terbaru dari dokumen ini di
<http://pdl.perl.org/?docs=FAQ&title=Sering%20Asked%20Questions> .
Q: 1.2 Seterpercayaapakah Olymp Trade? Kesimpulan untuk menyumbang untuk ini dokumen
Ini adalah versi FAQ PDL yang dikerjakan ulang. Karena banyak kesalahan yang mungkin terjadi
merayap masuk dan banyak pembaruan mungkin tidak berhasil masuk. Anda secara eksplisit didorong untuk membiarkan
kami tahu tentang pertanyaan yang menurut Anda harus dijawab dalam dokumen ini tetapi saat ini
tidak.
Demikian pula, jika menurut Anda bagian dari dokumen ini tidak jelas, harap beri tahu pengelola FAQ
tentang itu. Di mana jawaban spesifik diambil sepenuhnya dari seseorang yang memposting kepengarangan
harus ditunjukkan, beri tahu pengelola FAQ jika tidak. Untuk informasi lebih umum
pengakuan eksplisit tidak dibuat dalam teks, melainkan ada daftar yang tidak lengkap dari
kontributor di akhir dokumen ini. Silakan hubungi pengelola FAQ jika Anda merasa
sulit dilakukan oleh.
Kirimkan komentar, tambahan, saran atau koreksi Anda ke milis PDL di
[email dilindungi]. Lihat Q: 3.2 di bawah ini untuk instruksi tentang cara bergabung dengan milis
daftar.
UMUM PERTANYAAN
Q: 2.1 Apa is PDL ?
PDL adalah singkatan dari Perl Data Bahasa . Untuk mengatakannya dengan kata-kata Karl Glazebrook,
penggagas proyek PDL:
Konsep PDL adalah untuk memberikan perl5 standar kemampuan
untuk secara KOMPAK menyimpan dan CEPAT memanipulasi yang besar
Kumpulan data N-dimensi yang merupakan roti dan mentega
dari komputasi ilmiah. misalnya $a=$b+$c dapat menambahkan dua
2048x2048 gambar hanya dalam sepersekian detik.
Ini menyediakan banyak fungsi yang berguna untuk analisis ilmiah dan numerik.
Untuk pembaca yang akrab dengan paket evaluasi data ilmiah lainnya, mungkin bermanfaat untuk:
tambahkan bahwa PDL dalam banyak hal mirip dengan IDL, MATLAB dan paket serupa. Namun, itu
mencoba memperbaiki sejumlah masalah yang dianggap (oleh penulis PDL) sebagai
kekurangan dari paket-paket yang ada.
Q: 2.2 Siapa mendukung PDL? Siapa mengembangkan saya t?
PDL didukung oleh penggunanya. Dukungan informal umum untuk PDL diberikan melalui
milis PDL ([email dilindungi] , Lihat di bawah).
Sebagai ekstensi Perl (lihat Q: 2.5 di bawah) ini dikhususkan untuk ide bebas dan terbuka
pengembangan yang diajukan oleh komunitas Perl. PDL telah dan sedang dikembangkan secara aktif oleh a
sekelompok orang di seluruh dunia yang mengoordinasikan aktivitas mereka melalui
Milis pengembangan PDL ([email dilindungi] , lihat T: 3.2 di bawah). Jika kamu
ingin bergabung dalam upaya berkelanjutan untuk meningkatkan PDL, silakan bergabung dengan daftar ini.
Q: 2.3 Mengapa namun lain Data Bahasa ?
Sebenarnya ada beberapa alasan dan setiap orang harus memutuskan sendiri yang mana
yang paling penting:
· PDL adalah "perangkat lunak bebas". Penulis PDL berpikir bahwa konsep ini memiliki beberapa
keuntungan: setiap orang memiliki akses ke sumber -> debugging yang lebih baik, mudah beradaptasi
untuk kebutuhan Anda sendiri, dapat diperluas untuk tujuan Anda, dll... Dibandingkan dengan komersial
paket seperti MATLAB dan IDL ini sangat penting bagi pekerja yang
ingin melakukan beberapa pekerjaan di rumah dan tidak mampu membayar biaya yang cukup besar untuk membeli komersial
paket untuk penggunaan pribadi.
· PDL didasarkan pada bahasa scripting yang kuat dan dirancang dengan baik: Perl. Berlawanan dengan
bahasa analisis data ilmiah/numerik lainnya yang telah dirancang menggunakan
fitur dari bahasa yang terbukti bukannya tumbuh menjadi ada dari awal.
Mendefinisikan struktur kontrol saat fitur ditambahkan selama pengembangan mengarah ke
bahasa yang sering tampak kikuk dan tidak direncanakan dengan baik untuk sebagian besar paket yang ada dengan
lingkup yang sama seperti PDL.
· Menggunakan Perl sebagai dasar pemrogram PDL memiliki semua fitur canggih Perl di nya
tangan, sejak awal. Ini termasuk ekspresi reguler, array asosiatif
(hash), antarmuka yang dirancang dengan baik ke sistem operasi, jaringan, dll. Pengalaman
telah menunjukkan bahwa bahkan dalam pemrograman berorientasi numerik sering kali sangat
berguna jika Anda memiliki akses mudah ke semi-numerik yang kuat atau sepenuhnya non-numerik
fungsionalitas juga. Misalnya, Anda mungkin ingin menawarkan hasil a
komputasi yang rumit sebagai proses server ke proses lain di jaringan, mungkin
langsung menerima input dari proses lain di jaringan. Menggunakan Perl dan yang sudah ada
Paket ekstensi Perl hal-hal seperti ini tidak ada masalah sama sekali (dan semuanya akan cocok
ke dalam "skrip PDL" Anda).
· Ekstensibilitas dan interoperabilitas yang sangat mudah karena PDL adalah ekstensi Perl;
dukungan pengembangan untuk ekstensi Perl merupakan bagian integral dari Perl dan ada
sudah banyak ekstensi ke Perl standar yang tersedia secara bebas di jaringan.
· Fitur bahasa integral Perl (ekspresi reguler, hash, modul objek)
pengembangan dan implementasi konsep-konsep kunci PDL sangat difasilitasi. Satu dari
contoh yang paling mencolok untuk poin ini mungkin adalah PDL::PP (lihat Q: 6.16 di bawah), a
pembuat kode/parser/pra-prosesor yang menghasilkan fungsi PDL dari ringkas
deskripsi.
· Tidak ada bahasa data yang ada yang mengikuti aturan bahasa Perl, yang dibuat oleh penulis
sangat percaya pada:
· TIMTOWTDI: Ada lebih dari satu cara untuk melakukannya. Bahasa minimalis adalah
menarik bagi ilmuwan komputer, tetapi bagi pengguna, sedikit redundansi
membuat segalanya lebih mudah untuk diatasi dan memungkinkan gaya pemrograman individual -
sama seperti orang berbicara dengan cara yang berbeda. Bagi banyak orang, ini tidak diragukan lagi akan menjadi
alasan untuk menghindari PDL ;)
· Hal-hal sederhana menjadi sederhana, hal-hal rumit mungkin: Hal-hal yang sering dilakukan
seharusnya mudah dilakukan dalam bahasanya, sedangkan hal-hal yang jarang dilakukan seharusnya tidak terlalu
rumit.
Semua bahasa yang ada melanggar setidaknya satu dari aturan ini.
· Sebagai proyek untuk masa depan PDL harus dapat menggunakan fitur super komputer, mis
kemampuan vektor/pemrosesan paralel, akselerasi GPGPU. Ini mungkin akan menjadi
dicapai dengan memiliki PDL::PP (lihat Q: 6.16 di bawah) menghasilkan kode yang sesuai pada
arsitektur untuk mengeksploitasi fitur-fitur ini.
· [isikan 111 alasan favorit pribadi Anda di sini...]
Q: 2.4 Apa is PDL baik untuk ?
Untuk berjaga-jaga jika Anda belum tahu apa fitur utama PDL dan apa yang bisa dilakukan
dengan mereka, berikut adalah daftar fitur utama (harus selektif):
PDL sangat cocok untuk komputasi matriks, penanganan umum data multidimensi,
pemrosesan gambar, perhitungan ilmiah umum, aplikasi numerik. Ini mendukung I/O
untuk banyak format gambar dan data populer, 1D (plot garis), 2D (gambar) dan 3D (volume
visualisasi, plot permukaan melalui OpenGL - misalnya diimplementasikan menggunakan Mesa atau video
kartu driver OpenGL), kemampuan tampilan grafis dan mengimplementasikan banyak numerik dan
algoritma semi-numerik.
Melalui pra-prosesor yang kuat, juga mudah untuk menghubungkan Perl ke C favorite favorit Anda
rutinitas, lebih dari itu lebih lanjut di bawah.
Q: 2.5 Apa is itu koneksi antara PDL dan Perl ?
PDL adalah paket ekstensi Perl5. Karena itu diperlukan instalasi Perl5 yang ada (lihat
bawah) untuk dijalankan. Selain itu, sebagian besar PDL ditulis dalam Perl (+ beberapa fungsi inti yang
ditulis dalam C). Program PDL (secara sintaksis) hanyalah skrip Perl yang kebetulan digunakan
beberapa fungsi yang diimplementasikan oleh paket "PDL".
Q: 2.6 Apa do I perlu untuk menjalankan PDL on my mesin ?
Karena PDL hanyalah sebuah paket Perl5, pertama-tama Anda perlu menginstal Perl5 di
mesin. Saat tulisan ini dibuat, PDL membutuhkan versi 5.8 dari Perl, atau lebih tinggi. Informasi lebih lanjut
di mana dan bagaimana mendapatkan instalasi Perl dapat ditemukan di halaman rumah Perl
<http://www.perl.org> dan di banyak situs CPAN (jika Anda tidak tahu apa CPAN adalah, periksa
jawaban untuk pertanyaan berikutnya).
Untuk membangun PDL, Anda juga memerlukan kompiler C yang berfungsi, dukungan untuk Xsubs, dan paket
Extutils::MakeMaker. Jika Anda tidak memiliki kompiler, mungkin ada distribusi biner
tersedia, lihat "Distribusi biner" di bawah.
Jika Anda dapat (atau tidak dapat) membuat PDL bekerja pada platform baru (sebelumnya tidak didukung), kami akan
suka mendengarnya. Silakan laporkan keberhasilan/kegagalan Anda ke milis PDL di
[email dilindungi] . Kami akan melakukan yang terbaik untuk membantu Anda memindahkan PDL ke sistem baru.
Q: 2.7 Where do I mendapatkan saya t?
PDL tersedia sebagai distribusi sumber di Komprehensif Perl arsip jaringan (Atau
CPAN) dan dari halaman proyek sourceforge.net di
. Arsip CPAN tidak hanya berisi
Distribusi PDL tetapi juga hampir semua hal lain yang terkait dengan Perl. CPAN adalah
dicerminkan oleh lusinan situs di seluruh dunia. Situs utamanya adalahhttp://www.cpan.org>,
dan situs CPAN lokal (mirror) dapat ditemukan di sana. Dalam CPAN Anda menemukan yang terbaru
versi PDL yang dirilis di direktori /modules/by-module/PDL/. Beranda PDL ada di
<http://pdl.perl.org> dan versi terbaru juga dapat diunduh dari sana.
Q: 2.8 Apa do I memiliki untuk membayar untuk mendapatkan PDL?
Kami senang dapat memberi Anda jawaban terbaik untuk pertanyaan seperti
ini: PDL adalah *perangkat lunak bebas* dan semua sumber tersedia untuk umum. Tapi tetap saja, ada
beberapa hak cipta yang harus dipatuhi. Jadi tolong, cobalah bersikap sebaik kami (penulis PDL)
dan mencoba untuk mematuhi mereka.
Oh, sebelum Anda berpikir itu *sepenuhnya* gratis: Anda harus menginvestasikan waktu untuk menariknya
distribusi dari internet, kompilasi dan instal dan (mungkin) baca manualnya.
MENDAPATKAN BANTUAN/LEBIH LANJUT INFORMASI
Q: 3.1 Where bisa I mendapatkan informasi on PDL?
Dokumentasi PDL lengkap tersedia dengan distribusi PDL. Gunakan perintah
"perldoc PDL" untuk mulai belajar tentang PDL.
Namun, cara termudah sejauh ini untuk membiasakan diri dengan PDL adalah dengan menggunakan bantuan online PDL
fasilitas dari dalam shell PDL, "pdl2" Cukup ketik "pdl2" pada prompt sistem Anda. Sekali
Anda berada di dalam shell "pdl2" ketik "help" . Menggunakan perintah "help" dan "appropos"
di dalam shell Anda harus dapat menemukan jalan keluar dari dokumentasi.
Lebih baik lagi, Anda dapat langsung mencoba pengetahuan yang baru Anda peroleh tentang PDL dengan menerbitkan
Perintah PDL/Perl langsung di baris perintah. Untuk mengilustrasikan proses ini, berikut adalah
catatan sesi "pdl2" khas dari pemula PDL (keluaran panjang hanya secara simbolis
direproduksi dalam kurung kurawal ( <... ...> ) ):
unix> pdl2
pdl> tolong
< ... keluaran bantuan ... >
pdl> bantu PDL::QuickStart
< ... halaman perldoc ... >
pdl> $a = pdl (1,5,7.3,1.0)
pdl> $b = urutan float, 4, 4
pdl> bantuan batin
< ... bantuan pada fungsi 'dalam' ... >
pdl> $c = dalam $a, $b
pdl> p $c
[22.6 79.8 137 194.2]
Untuk sumber informasi lebih lanjut yang dapat diakses melalui Internet, lihat berikutnya
pertanyaan.
Q: 3.2 Adalah sana lain PDL informasi sumber on itu Internet?
Pertama-tama, untuk semua pertanyaan murni terkait Perl, ada banyak sekali sumber di internet.
Poin bagus untuk memulai adalahhttp://www.perl.com> danhttp://www.perl.org>.
Situs beranda PDL dapat diakses dengan mengarahkan browser web Anda kehttp://pdl.perl.org>.
Ini memiliki banyak barang untuk siapa saja yang tertarik dengan PDL:
· Distribusi PDL
· Dokumentasi online
· Pointer ke arsip HTML dari milis PDL
· Daftar platform di mana PDL telah berhasil diuji.
· Berita tentang fitur yang baru ditambahkan, perpustakaan porting, dll.
· Nama pemegang labu saat ini untuk modul PDL yang berbeda (jika Anda ingin tahu
apa artinya Anda sebaiknya melihat halaman web).
Jika Anda tertarik dengan PDL secara umum, Anda dapat bergabung dengan milis PDL
[email dilindungi]. Ini adalah forum untuk membahas masalah pemrograman di PDL, melaporkan bug,
mencari bantuan dengan masalah terkait PDL, dll. Untuk berlangganan, isi formulir di
<http://mailman.jach.hawaii.edu/mailman/listinfo/perldl>.
Arsip yang dapat dicari dan versi hypertext dari lalu lintas pada daftar ini (1997-2004) dapat
ditemukan dihttp://www.xray.mpe.mpg.de/mailing-lists/perldl/> . Pesan yang lebih baru
(sejak Juni 2005) dapat ditemukan dihttp://mailman.jach.hawaii.edu/mailman/listinfo/perldl>
.
Jika Anda tertarik dengan semua detail teknis dari pengembangan PDL yang sedang berlangsung, Anda dapat
bergabung dengan milis pengembang PDL [email dilindungi] . Untuk berlangganan, isi
formathttp://mailman.jach.hawaii.edu/mailman/listinfo/pdl-porters>.
Arsip yang dapat dicari dan versi hypertext dari lalu lintas pada daftar ini (1997-2004) dapat
ditemukan dihttp://www.xray.mpe.mpg.de/mailing-lists/pdl-porters/> . Pesan yang lebih baru
(sejak Juni 2005) dapat ditemukan di
<http://mailman.jach.hawaii.edu/mailman/listinfo/pdl-porters>.
Posting silang antara daftar ini harus dihindari kecuali jika ada sangat alasan yang bagus untuk
melakukan itu.
Q: 3.3 Apa is itu arus versi of PDL ?
Pada tulisan ini (FAQ versi 1.004 tanggal 16 Sep 2013) versi stabil terbaru adalah 2.006.
Versi stabil terbaru harus selalu tersedia dari situs cermin CPAN di dekat Anda (lihat
Pertanyaan 2.7 untuk info di mana mendapatkan PDL).
Versi PDL terbaru (mungkin tidak stabil) dapat diperoleh dari Git
repositori, lihat Pertanyaan 4.10 dan rilis pengembang CPAN berkala dari kode Git akan
dibuat untuk tujuan pengujian dan ketersediaan yang lebih umum. Pasca-PDL-2.006 saat ini
rilis pengembang PDL tersedia sebagai CHM/PDL-2.006_07.tar.gz .
Q: 3.4 I ingin untuk menyumbang untuk itu lebih lanjut pengembangan of PDL. Seterpercayaapakah Olymp Trade? Kesimpulan bisa I membantu?
Dua cara yang dapat Anda bantu segera adalah (1) berpartisipasi dalam Penguji CPAN untuk
PDL dan modul terkait, dan (2) mengoreksi dan mengklarifikasi dokumentasi PDL sehingga
itu paling bisa digunakan untuk pengguna PDL, terutama pengguna baru.
Untuk berpartisipasi dalam Penguji CPAN dan menyumbangkan laporan pengujian, halaman
<http://wiki.cpantesters.org/wiki/QuickStart> memiliki instruksi untuk memulai keduanya
Pengguna "CPAN" atau "CPANPLUS".
Jika Anda memiliki proyek tertentu, Anda harus memeriksa apakah orang lain sudah bekerja
di atasnya atau jika Anda bisa mendapatkan keuntungan dari modul yang ada. Lakukan dengan memposting proyek yang Anda rencanakan
ke milis pengembang PDL di [email dilindungi] . Lihat langganannya
instruksi pada Pertanyaan 3.2. Kami selalu mencari orang untuk menulis kode dan/atau
dokumentasi ;).
Q: 3.5 I berpikir I memiliki ditemukan a kesalahan in itu arus versi of PDL. Apa akan I melakukan?
Pertama, pastikan bug/masalah yang Anda temui belum teratasi
di tempat lain di FAQ ini. Kedua, Anda dapat memeriksa arsip PDL yang dapat dicari
milis untuk mengetahui apakah bug ini telah dibahas. Jika Anda masih belum
menemukan penjelasan apa pun yang dapat Anda kirimi laporan bug [email dilindungi] , atau melalui
tautan Bug aktifhttp://pdl.perl.org> . Lihat BUG file dalam distribusi PDL untuk
informasi apa yang harus disertakan. Jika Anda tidak yakin, diskusikan melalui milis perldl
bisa sangat membantu.
INSTALASI
Q: 4.1 I memiliki masalah Instalasi PDL. Apa akan I melakukan?
Pertama pastikan Anda telah membaca file INSTALL dalam distribusi. Ini berisi daftar
masalah umum yang tidak perlu diulang di sini.
Selanjutnya, periksa file perldl.conf untuk melihat apakah dengan mengedit opsi konfigurasi di dalamnya
file Anda akan berhasil membangun PDL. Beberapa modul membutuhkan tambahan
perangkat lunak yang diinstal, silakan merujuk ke file KETERGANTUNGAN untuk rincian lebih lanjut. Yakinkan
untuk mengedit lokasi paket-paket ini di perldl.conf jika Anda memilikinya di non-standar
Lokasi.
NB Unix shell khusus: Jika Anda ingin menyimpan perldl.conf yang telah diedit untuk masa mendatang
build cukup salin sebagai ~/.perldl.conf ke direktori home Anda di mana itu akan diambil
secara otomatis selama proses pembuatan PDL.
Juga, periksa versi PDL lain yang sudah ada sebelumnya di sistem build. Beberapa PDL
menginstal di PATH atau @INC yang sama dapat menyebabkan pengujian membingungkan atau kegagalan build.
Jika Anda masih tidak dapat membuatnya berfungsi dengan baik, kirimkan laporan bug termasuk detailnya
informasi tentang masalah yang Anda temui ke milis perldl (
[email dilindungi] , lihat juga di atas). Respon seringkali cepat.
Q: 4.2 Adalah sana konfigurasi arsip untuk PDL I memiliki untuk mengedit?
Sebagian besar pengguna tidak perlu mengedit file konfigurasi apa pun secara manual. Namun, di beberapa
kasus Anda mungkin harus memberikan beberapa informasi tentang penempatan yang canggung termasuk
file/pustaka atau Anda mungkin ingin secara eksplisit menonaktifkan pembuatan beberapa PDL opsional
modul. Periksa file INSTALL dan perldl.conf untuk rincian.
Jika Anda harus mengedit secara manual perldl.conf dan senang dengan hasil yang bisa Anda pertahankan
file berguna untuk referensi di masa mendatang. Tempatkan di ~/.perldl.conf dimana akan diambil
secara otomatis atau gunakan "Perl Makefile.PL PDLCONF=your_file_name" saat berikutnya Anda membuat PDL.
Q: 4.3 Do I perlu lain perangkat lunak untuk sukses operasi?
Untuk fungsionalitas PDL dasar, Anda tidak memerlukan perangkat lunak tambahan apa pun. Namun, beberapa dari
modul PDL opsional yang disertakan dalam distribusi (terutama sebagian besar grafik dan beberapa I/O
modul) memerlukan perpustakaan/program tertentu untuk diinstal. Cek filenya
KETERGANTUNGAN dalam distribusi untuk detail dan petunjuk tentang cara mendapatkannya.
Q: 4.4 Seterpercayaapakah Olymp Trade? Kesimpulan bisa I install PDL in a tidak standar lokasi?
Untuk menginstal PDL di lokasi non-standar, gunakan opsi INSTALL_BASE di "perl
Makefile.PL" langkah konfigurasi. Misalnya, "perl Makefile.PL INSTALL_BASE=/mydir/perl5"
akan mengonfigurasi PDL untuk menginstal ke pohon yang di-root di "/mydir/perl5". Untuk lebih jelasnya
lihat "Bagaimana cara menyimpan direktori modul/perpustakaan saya sendiri?" di perlfaq8 dan bagian selanjutnya.
Alternatif lain adalah menggunakan local::lib untuk melakukan daftar berat untuk yang dibutuhkan
konfigurasi.
Q: 4.5 Seterpercayaapakah Olymp Trade? Kesimpulan bisa I kekuatan a sama sekali membersihkan instalasi?
Untuk menjamin instalasi PDL yang benar-benar bersih, Anda harus terlebih dahulu menghapus file
file dan folder instalasi saat ini. Ini akan menjadi semua direktori bernama "PDL" di
Perl @INC path, file bernama "*Pdlpp*" di direktori "Inline" mana pun, dan program "pdl,
pdldoc, pdl2, perldl, dan pptemplate". Kemudian tinggal build dan install seperti biasa.
jauh lebih mudah untuk melacak jika Anda selalu menginstal "PDL" ke lokasi non-standar.
Lihat T: 4.4 di atas.
BINARY DISTRIBUSI
Q: 4.5 Apa biner distribusi adalah tersedia?
Informasi tentang distribusi biner PDL dapat ditemukan dihttp://pdl.perl.org> . Pada
sekarang ada distribusi biner PDL untuk Linux (RedHat dan Debian), FreeBSD, Mac
OS X dan Windows, meskipun mungkin bukan versi terbaru.
Jika seseorang tertarik untuk menyediakan distribusi biner untuk arsitektur lain, itu
akan sangat diterima. Beri tahu kami di [email dilindungi] milis. Juga
periksa manajer paket distribusi Linux Anda karena sekarang banyak yang menyertakan PDL. PPM untuk win32
versi (baik 32bit dan 64bit) juga tersedia.
Q: 4.6 Apakah PDL menjalankan on Linux? (Dan apa tentang paket?)
Ya, PDL berjalan di Linux dan memang banyak pengembangan telah dilakukan di Linux.
Padahttp://pdl.perl.org> Anda dapat menemukan tautan ke paket untuk beberapa jurusan
distribusi. Periksa juga manajer paket distribusi Anda (yum, apt, urpmi, ...) sebagai
PDL sekarang ditemukan oleh banyak dari ini.
Q: 4.7 Apakah PDL menjalankan bawah Jendela?
PDL dibangun dengan baik di Win32 menggunakan kompiler MinGW atau Microsoft. Lihat win32/INSTAL fillet
dalam distribusi sumber PDL untuk detailnya. Kompiler lain belum diuji--input
dipersilakan. Ada juga distribusi PDL melalui ppm ActiveState, meskipun
mungkin tidak selalu menjadi versi terbaru. PDL-2.006 dibangun di luar kotak di Strawberry
Perl dan ActiveState Perl.
CV, GI, DAN AKAN SAJA PENGEMBANGAN
Q: 4.8 Bisa I mendapatkan PDL melalui CV?
Tidak. Pengembangan PDL dilakukan dengan repositori CVS dari Desember 1999 hingga April 2009.
Pada bulan April 2009 proyek beralih ke sistem kontrol versi Git (lihat
<http://git-scm.com>).
Q: 4.9 Seterpercayaapakah Olymp Trade? Kesimpulan do I mendapatkan PDL melalui Git?
Asumsikan Anda telah menginstal Git di sistem Anda dan ingin mengunduh kode sumber proyek
ke dalam direktori "PDL". Untuk mendapatkan akses baca-saja ke repositori, Anda mengetik di
command line
git clone git://git.code.sf.net/p/pdl/code pdl-code
Untuk pengembang PDL resmi, untuk mendapatkan akses baca/tulis ke jenis repositori di
command line
git klon ssh://[email dilindungi]/p/pdl/kode pdl-kode
Q: 4.10 I memiliki a masalah dengan itu pergi versi, bagaimana do I memeriksa if seseorang memiliki disampaikan a
tambalan?
Sistem Sourceforge berisi manajer tambalan yang berisi tambalan yang belum
telah diterapkan pada distribusi. Ini dapat diakses melalui menu Tiket di PDL's
Halaman proyek Sourceforgehttp://sourceforge.net/projects/pdl>.
Selain itu, jika Anda tidak berlangganan milis, periksa arsip
milis "pdl-porter" dan "perldl". Lihat Pertanyaan 3.2 untuk detailnya.
Q: 4.11 I memiliki mendapat pembangun mengakses untuk Git, bagaimana do I mengunggah my perubahan?
Hal pertama yang harus Anda lakukan adalah membaca dokumentasi Git dan mempelajari dasar-dasar tentang
Git. Ada banyak sumber yang tersedia secara online. Tapi inilah dasar-dasarnya:
Sebelum Anda mengunggah perubahan Anda, komit ke repositori ANDA
git tambahkan ...
git commit
atau gabungkan keduanya dengan
git commit -a
Kemudian tarik perubahan apa pun yang dibuat orang lain
git tarik asal
Uji PDL sebelum Anda mendorongnya ke repositori utama. Jika kode rusak untuk Anda,
maka kemungkinan besar rusak untuk orang lain dan mereka tidak akan senang memiliki PDL baru-baru ini
gagal membangun! CATATAN: git membuatnya sangat mudah untuk mempertahankan cabang pengembangan yang terpisah.
[ TBD, berikan informasi tentang caranya ].
Kemudian perbarui repositori bersama (di SF.net) dengan perubahan Anda
git push master asal
PDL JARGON
Q: 5.1 Apa is threading (adalah PDL a pembaca berita) ?
Sayangnya, dalam konteks PDL istilah threading dapat memiliki dua perbedaan (tetapi
terkait) arti:
· Ketika disebutkan dalam INSTALL arah dan mungkin selama proses pembuatan yang kami miliki
arti ilmu komputer biasa dari multi-threading dalam pikiran (berguna terutama pada
mesin multiprosesor atau cluster)
· Operasi threading PDL pada piddles (sebagaimana disebutkan dalam dokumen pengindeksan) adalah
iterasi dari operasi dasar pada sub-irisan piddle yang sesuai, misalnya bagian dalam
produk "dalam $a, $b" dari a (3) pdl $a dan a (3,5,4) pdl $b menghasilkan (5,4) piddle
di mana setiap nilai adalah hasil perkalian dalam dari (3) pdl dengan (3) sub-irisan
dari (3,5,4) piddle. Untuk detailnya, periksa PDL::Indexing
Threading PDL secara alami mengarah ke kode paralel yang berpotensi yang dapat menggunakan multi
threading pada mesin/jaringan multiprosesor; di sana Anda memiliki hubungan antara
dua jenis penggunaan istilah.
Q: 5.2 Apa is a kencing?
Nah, variabel skalar PDL (yang merupakan instance dari kelas objek Perl tertentu,
yaitu benda-benda yang diberkati (lihat "perldoc perlobj")) dalam bahasa PDL umum sering disebut
piddle (misalnya, periksa arsip milis). Err, jelas? Jika tidak, cukup gunakan
syarat kencing ketika Anda merujuk ke variabel PDL (instance dari objek PDL seperti yang Anda lakukan
ingat) terlepas dari data aktual apa yang terkandung dalam variabel PDL.
TEKNIS PERTANYAAN
Q: 6.1 Apa is perll? Apa is pdl2?
Terkadang "perldl" ("pdl2") digunakan sebagai sinonim untuk PDL. Sebenarnya, bagaimanapun,
nama "perldl" ("pdl2") dicadangkan untuk shell kecil yang disertakan dengan PDL
distribusi dan seharusnya digunakan untuk prototyping interaktif skrip PDL.
Untuk detailnya, periksa perldl atau pdl2.
Q: 6.2 Seterpercayaapakah Olymp Trade? Kesimpulan do I mendapatkan secara online membantu untuk PDL?
Cukup ketik "help" (pintasan = "?") pada prompt shell "pdl2" dan lanjutkan dari sana.
Perintah lain yang berguna adalah perintah "apropos" (shortcut = "??"). Coba juga "demo"
perintah di shell "perldl" atau "pdl2" jika Anda baru menggunakan PDL.
MANIPULASI OF PIDDLES
Q: 6.3 I ingin untuk mengakses itu ketiga elemen of a pdl tapi $a[2] tidak kerja ?!
Lihat jawaban untuk pertanyaan berikutnya mengapa sintaks array Perl normal tidak berfungsi untuk piddle.
Q: 6.4 docs mengatakan piddle adalah beberapa jenis of Himpunan. Tapi mengapa tidak itu Perl susunan sintaksis
kerja dengan piddle kemudian ?
OK, Anda benar dalam satu hal. Dokumen mengatakan bahwa piddle dapat dianggap sebagai array. Lagi
secara khusus, dikatakan ( PDL::QuickStart ):
Saya menemukan ketika menggunakan Bahasa Data Perl itu paling berguna
untuk memikirkan variabel Perl @x standar sebagai "daftar" generik
"hal" dan variabel PDL seperti $x sebagai "array" yang dapat
terkandung dalam daftar atau hash.
Jadi, sementara piddle dapat dianggap sebagai semacam array multi-dimensi, mereka adalah tidak
array dalam arti Perl. Sebaliknya, dari sudut pandang Perl, mereka spesial
class (yang saat ini diimplementasikan sebagai penunjuk buram ke beberapa hal di memori) dan
oleh karena itu perlu fungsi khusus (atau 'metode' jika Anda menggunakan versi OO) untuk mengakses
elemen individu atau berbagai elemen. Fungsi/metode untuk memeriksa adalah "di" /
"set" (lihat bagian 'Sections' di PDL::QuickStart ) atau fungsi "slice" yang kuat
dan teman-teman (lihat PDL::Slices dan PDL::Indexing dan khususnya PDL::NiceSlice ).
Akhirnya, untuk membingungkan Anda sepenuhnya, Anda dapat memiliki array Piddle Perl, misalnya $spec[3] can
merujuk ke pdl yang mewakili ,misalnya, spektrum, di mana $spec[3] adalah elemen keempat dari
Daftar Perl (atau larik;) @spec . Ini mungkin membingungkan tetapi sangat berguna!
Q: 6.5 Seterpercayaapakah Olymp Trade? Kesimpulan do I menggabungkan piddle?
Kebanyakan orang akan mencoba untuk membuat piddle baru dari piddle lama dengan menggunakan beberapa variasi
tema: "$a = pdl([$b, 0, 2])" , tetapi ini tidak berhasil. Cara menggabungkan piddle adalah
untuk menggunakan fungsi "cat" (lihat juga "tambahkan" dan "lem"). Demikian pula Anda dapat membagi piddles
menggunakan perintah "anjing".
Q: 6.6 Terkadang I am mendapatkan Ini aneh hasil ketika menggunakan di tempat operasi?
Pertanyaan ini terkait dengan fungsi "di tempat". Dari dokumentasi (lihat
PDL::Mulai Cepat):
Sebagian besar fungsi, misalnya log(), mengembalikan hasil yang a
transformasi argumen mereka. Ini bagus
praktek pemrograman. Namun banyak operasi yang dapat dilakukan
"di tempat" dan ini mungkin diperlukan ketika array besar ada di
penggunaan dan memori sangat mahal. Untuk keadaan ini
operator inplace() disediakan yang mencegah salinan tambahan
dan memungkinkan argumen untuk dimodifikasi. misalnya:
$x = log($array); # $array tidak terpengaruh
log( di tempat($bigarray) ); # $bigarray berubah di tempat
Dan juga dari doc!!:
Jelas bila digunakan dengan beberapa fungsi yang tidak bisa
diterapkan in situ (misalnya convolve()) efek tak terduga mungkin
terjadi!
Q: 6.7 Apa is ini aneh pemakaian of itu string rangkaian operator ".=" in PDL
skrip?
Lihat pertanyaan selanjutnya tentang tugas di PDL.
Q: 6.8 Mengapa adalah sana dua berbeda jenis of tugas in PDL ?
Ini disebabkan oleh fakta bahwa saat ini operator penugasan "=" hanya mengizinkan
kelebihan beban terbatas. Untuk beberapa tujuan PDL ternyata perlu memiliki
lebih banyak kontrol atas kelebihan beban operator penugasan. Oleh karena itu, PDL membaca dengan teliti
operator ".=" untuk jenis tugas tertentu.
Q: 6.9 Seterpercayaapakah Olymp Trade? Kesimpulan do I set a set of nilai-nilai in a kencing?
Di Perl 5.6.7 dan yang lebih tinggi, penugasan ini dapat dibuat menggunakan subrutin lvalue:
pdl> $a = urutan(5); hal $a
[0 1 2 3 4]
pdl> $a->slice('1:2') .= pdl([5,6])
pdl> p $a
[0 5 6 3 4]
lihat PDL::Lvalue untuk info lebih lanjut. PDL juga mendukung sintaks irisan yang lebih mirip matriks melalui
PDL::Modul NiceSlice:
pdl> $a(1:2) .= pdl([5,6])
pdl> p $a
[0 5 6 3 4]
Dengan versi Perl sebelum 5.6.7 or ketika berjalan bawah itu perl debugger ini harus
dilakukan dengan menggunakan variabel sementara:
pdl> $a = urutan(5); hal $a
[0 1 2 3 4]
pdl> $tmp = $a->slice('1:2'); p $tmp;
[1 2]
pdl> $tmp .= pdl([5, 6]); # Catatan .= !!
pdl> p $a
[0 5 6 3 4]
Ini juga dapat dibuat menjadi satu ekspresi, yang sering terlihat dalam kode PDL:
pdl> ($tmp = $a->slice('1:2')) .= pdl([5,6])
pdl> p $a
[0 5 6 3 4]
Q: 6.10 Bisa I menggunakan a kencing in a bersyarat ekspresi?
Ya, Anda bisa, tetapi tidak dengan cara yang mungkin Anda coba dulu. Tidak mungkin menggunakan
piddle langsung dalam ekspresi bersyarat karena ini biasanya tidak didefinisikan dengan baik. Sebagai gantinya
PDL memiliki dua fungsi yang sangat berguna: "any" dan "all" . Gunakan ini untuk menguji apakah ada atau semua
elemen dalam piddle memenuhi beberapa kriteria:
pdl> $a=pdl ( 1, -2, 3);
pdl> print '$a memiliki setidaknya satu elemen < 0' if (setiap $a < 0);
$a memiliki setidaknya satu elemen < 0
pdl> print '$a tidak pasti positif' kecuali (semua $a > 0);
$a bukan pasti positif
Q: 6.11 logis operator dan piddle - '||' dan '&&' tidak kerja!
Ini adalah masalah umum ketika Anda mencoba membuat array topeng atau sesuatu yang serupa menggunakan a
membangun seperti
$mask = which($piddle > 1 && $piddle < 2); # salah
Kredensial mikro tidak tidak bekerja! Apa yang anda cari adalah bitwise operator logika '|' dan
'&' yang bekerja berdasarkan elemen demi elemen. Jadi ini sangat sederhana: Jangan gunakan
operator logis pada piddle multi-elemen karena itu benar-benar tidak masuk akal, sebagai gantinya
tuliskan contohnya sebagai:
$mask = which($piddle > 1 & $piddle < 2);
yang bekerja dengan benar.
ADVANCED TOPIK
Q: 6.12 Apa is a nol pdl ?
"null" adalah token khusus untuk 'piddle kosong'. Sebuah pdl null dapat digunakan untuk menandai ke PDL
berfungsi bahwa itu harus membuat piddle berukuran dan diketik dengan tepat. Null piddle dapat
digunakan di tempat di mana fungsi PDL mengharapkan keluaran or sementara argumen. Keluaran dan
sementara argumen ditandai di tanda tangan dari fungsi PDL dengan "[o]" dan
Kualifikasi "[t]" (lihat pertanyaan berikutnya jika Anda tidak tahu apa tanda tangan dari fungsi PDL
adalah). Misalnya, Anda dapat menjalankan fungsi "sumover" sebagai berikut:
jumlah $a, $b=null;
yang setara dengan
$b = jumlah $a;
Jika ini tampaknya masih agak kabur, periksa PDL::Indexing dan PDL::PP untuk detail tentang panggilan
konvensi, tanda tangan dan threading (lihat juga di bawah).
Q: 6.13 Apa is itu tanda tangan of a PDL fungsi ?
tanda tangan fungsi merupakan konsep penting dalam PDL. Banyak (tetapi tidak semua) PDL
fungsi memiliki tanda tangan yang menentukan argumen dan (minimal)
kematraan. Sebagai contoh, lihat tanda tangan dari fungsi "maksimum":
'sebuah); [o] b;'
ini mengatakan bahwa "maksimum" membutuhkan dua argumen, yang pertama adalah (setidaknya) satu-
dimensi sedangkan yang kedua adalah dimensi nol dan an keluaran argumen (ditandai oleh
kualifikasi "[o]"). Jika fungsi dipanggil dengan piddles dari dimensi yang lebih tinggi,
fungsi akan berulang kali dipanggil dengan irisan piddles yang sesuai ini
dimensi (ini disebut threading dalam PDL).
Untuk detail dan penjelasan lebih lanjut, lihat PDL::Indexing dan PDL::PP .
Q: 6.14 Seterpercayaapakah Olymp Trade? Kesimpulan bisa I Subclass (mewarisi dari) piddle?
Jawaban singkatnya adalah: baca PDL::Objects (mis. ketik "help PDL::Objects" di kolom perldl or
pdl2 kerang).
Jawaban yang lebih panjang (diekstrak dari PDL::Objects ): Karena objek PDL buram
referensi ke struct C, tidak mungkin untuk memperluas kelas PDL dengan misalnya data tambahan melalui
sub-kelas (seperti yang dapat Anda lakukan dengan objek Perl berbasis hash). Untuk menghindari masalah ini
PDL memiliki dukungan bawaan untuk memperluas kelas PDL melalui mempunyai sebuah hubungan untuk diberkati
hash. Anda bisa mendapatkan MEMPUNYAI SEBUAH berperilaku seperti ADALAH hanya karena Anda menetapkan objek PDL
ke atribut bernama "PDL" dan mendefinisikan kembali metode inisialisasi(). Sebagai contoh:
paket FOO;
@FOO::ISA = qw(PDL);
sub inisialisasi {
$kelas saya = shift;
$diriku = {
creation_time => time(), # ekstensi yang diperlukan :-)
PDL => PDL->null, # digunakan untuk menyimpan objek PDL
};
memberkati $diri, $kelas;
}
Untuk contoh lain, periksa skrip t/subkelas.t dalam distribusi PDL.
Q: 6.15 Apa on bumi is ini aliran data barang ?
Dataflow adalah proyek eksperimental yang tidak perlu Anda khawatirkan (itu
seharusnya tidak mengganggu pemrograman Anda yang biasa). Namun, jika Anda ingin tahu, miliki
lihat PDL::Dataflow . Ada aplikasi yang akan mendapat manfaat dari fitur ini (dan
itu sudah bekerja di belakang layar).
Q: 6.16 Apa is PDL::PP?
Jawaban sederhana: PDL::PP adalah perekat antara perpustakaan eksternal dan PDL dan ringkas
bahasa untuk menulis fungsi PDL.
Jawaban yang sedikit lebih panjang: PDL::PP digunakan untuk mengkompilasi definisi yang sangat ringkas ke dalam XSUB
rutinitas diimplementasikan dalam C yang dapat dengan mudah dipanggil dari PDL dan yang secara otomatis
mendukung threading, aliran data, dan hal-hal lain tanpa Anda harus mengkhawatirkannya.
Untuk detail lebih lanjut, periksa PDL::PP dan bagian di bawah tentang Ekstensi PDL.
Q: 6.17 Apa Terjadi ketika I memiliki beberapa referensi untuk itu sama PDL obyek in berbeda
variabel (kloning, dll?) ?
Piddles berperilaku seperti referensi Perl dalam banyak hal. Jadi ketika Anda mengatakan
$a = pdl[0,1,2,3];
$b = $a;
maka $b dan $a menunjuk ke objek yang sama, misalnya kemudian mengatakan
$b++;
*tidak* akan membuat salinan dari piddle asli tetapi hanya menambah di tempat, yang Anda
dapat meyakinkan diri sendiri dengan mengatakan
cetak $a;
[1 2 3 4]
Ini tidak boleh disalahartikan sebagai aliran data yang menghubungkan beberapa objek *berbeda* jadi
bahwa perubahan data disebarkan di antara piddle yang terhubung (meskipun, dalam kondisi tertentu)
keadaan, dataflow piddles dapat berbagi data yang sama secara fisik).
Penting untuk mengingat "sifat referensi" dari piddles saat melewati piddles
menjadi subrutin. Jika Anda memodifikasi piddle input, Anda memodifikasi argumen asli, tidak a
salinannya. Ini berbeda dari beberapa bahasa pemrosesan array lainnya tetapi membuat untuk
passing piddle yang sangat efisien di antara subrutin. Jika Anda tidak ingin mengubah
argumen asli melainkan salinannya hanya membuat salinan secara eksplisit (contoh ini juga
mendemonstrasikan cara memeriksa dengan benar suatu eksplisit permintaan untuk diproses di tempat, dengan asumsi
rutinitas Anda dapat bekerja di tempat):
sub fungsi saya {
$pdl saya = shift;
if ($pdl->is_inplace) {
$pdl->set_di tempat(0)
} Else {
# ubah salinan secara default
$pdl = $pdl->salin
}
$pdl->set(0,0);
kembali $pdl;
}
LAIN-LAIN
Q: 6.18 Apa I / O format adalah didukung by PDL ?
Versi PDL saat ini sudah mendukung cukup banyak format I/O yang berbeda.
Namun, tidak selalu jelas modul mana yang mengimplementasikan format mana. Untuk membantu Anda menemukan
modul yang tepat untuk format yang Anda butuhkan, berikut adalah daftar singkat dari daftar saat ini
Format I/O dan petunjuk di mana modul untuk menemukan implementasi:
· Format I/O mentah cepat (biner) buatan rumah untuk PDL diimplementasikan oleh modul FastRaw
· Modul FlexRaw mengimplementasikan metode umum untuk input dan output data `mentah'
array. Secara khusus, ini dirancang untuk membaca output dari FORTRAN 77 UNFORMATTED
file dan fungsi "tulis" C tingkat rendah, bahkan jika file dikompresi atau
di-zip.
Ada kemungkinan bahwa fungsi FastRaw akan disertakan dalam modul FlexRaw
pada suatu waktu di masa depan.
· FITS I/O diimplementasikan oleh fungsi "wfits"/"rfits" di PDL::IO::FITS .
· I/O file ASCII dalam berbagai format dapat dicapai dengan menggunakan "rcols" dan "rgrep"
fungsi, juga di PDL::IO::Misc .
· PDL::IO::Pic mengimplementasikan antarmuka ke filter NetPBM/PBM+ untuk membaca/menulis beberapa
format gambar populer; juga didukung adalah output dari urutan gambar sebagai film MPEG,
GIF animasi dan berbagai format video lainnya.
· Di CPAN Anda dapat menemukan modul PDL::NetCDF yang berfungsi dengan yang dirilis saat ini
versi PDL 2.006.
Untuk perincian lebih lanjut, lihat daftar yang lebih rinci dalam dokumentasi PDL::IO atau
dokumentasi untuk modul individu.
Q: 6.19 Seterpercayaapakah Olymp Trade? Kesimpulan bisa I tumpukan a set of 2D array (gambar-gambar) ke a 3D kencing?
Dengan asumsi semua array memiliki ukuran yang sama dan dalam beberapa format yang dikenali oleh "rpic" (lihat
PDL::IO::Pic ) Anda bisa mengatakan:
gunakan PDL::IO::Gambar;
@nama = qw/nama1.tif .... namaN.tif/; # beberapa nama file
$dummy = PDL->rpic($names[0]);
$cube = PDL->zeroes($dummy->type,$dummy->dims,$#names+1); # buat piddle 3D
untuk (0..$#nama) {
# ini adalah tugas irisan
($tmp = $cube->slice(":,:,($_)")) .= PDL->rpic($names[$_]);
}
or
$cube(:,:,($_)) .= PDL->rpic($names[$_]);
untuk penugasan slice menggunakan sintaks PDL::NiceSlice baru dan penugasan Lvalue.
Loop for membaca gambar aktual menjadi piddle 2D sementara yang nilainya kemudian
ditugaskan (menggunakan operator ".=" yang kelebihan beban) ke irisan yang sesuai dari piddle 3D
$kubus .
Q: 6.20 Where adalah uji arsip untuk itu grafis modul?
Jawaban ini berlaku terutama untuk PDL::Graphics::TriD (grafik 3D independen perangkat PDL
model) yang merupakan salah satu yang paling sulit dalam hal ini. Anda menemukan beberapa skrip pengujian di
Demo/TriD dalam distribusi. Ada juga tes 3d.pl dan baris3d.pl dalam
Direktori PDL/Contoh/TriD. Setelah Anda membangun PDL, Anda dapat melakukan:
perl -Mblib Contoh/TriD/3dtest.pl
perl -Mblib Contoh/TriD/line3d.pl
untuk mencoba dua program uji TriD. Mereka masing-masing hanya menjalankan satu fungsi TriD tetapi
kesederhanaan memudahkan debug jika diperlukan dengan debugger Perl, lihat perldbug.
Program-program di direktori Demo dapat dijalankan paling mudah dari "perldl" atau "pdl2"
cangkang interaktif:
perl -Mblib perldl atau perl -Mblib Perldl2/pdl2
diikuti oleh "demo 3d" atau "demo 3d2" saat diminta. "demo" dengan sendirinya akan memberi Anda daftar
demo PDL yang tersedia.
Anda dapat menjalankan skrip pengujian di direktori Demos/TriD secara manual dengan mengubahnya
direktori dan menjalankan
perl -Mblib
di mana "testfile" ; harus cocok dengan pola "test[3-9].p" dan lihat hasilnya. Beberapa
tes akan memunculkan jendela di mana Anda dapat mengontrol (memutar) objek 3D dengan
mouse. Coba gunakan tombol mouse 1 untuk memutar objek dalam ruang 3D, tombol mouse 3 untuk
memperbesar dan memperkecil, dan 'q' untuk maju ke tahap tes berikutnya.
Q: 6.21 Apa is TriD or PDL::Trid or PDL::Grafik::TriD?
Pertanyaan seperti ini seharusnya sudah tidak ada lagi dengan sistem bantuan online PDL di
tempat. Coba saja (setelah instalasi):
un*x> pdl2
pdl> sesuai trid
Periksa output untuk hit yang menjanjikan lalu coba cari beberapa di antaranya, mis
pdl> bantuan PDL::Graphics::TriD
Perhatikan bahwa kasus penting dengan "bantuan" tetapi tidak dengan "apropos" .
Q: 6.22 PGPLOT tidak tidak menulis di luar PNG file.
Ada beberapa sumber masalah dengan file PGPLOT dan PNG. Pertama, saat menyusun
pgplot library, pastikan Anda menghapus komentar pada entri PNG di driver.list mengajukan. Kemudian
saat menjalankan 'make' Anda mungkin mendapatkan kesalahan seperti
C
Untuk memperbaikinya, cari baris di 'makefile' yang dimulai dengan 'pndriv.o:' (dekat
bawah). Ubah, misalnya, ./png.h menjadi /usr/include/png.h, jika itu adalah tempat header Anda
file adalah (Anda memiliki paket libpng dan libz devel, bukan?). Lakukan ini untuk semua
empat entri pada baris itu, lalu kembali dan jalankan "make".
Kedua, jika Anda sudah menginstal modul PGPLOT Perl dan PDL, Anda mungkin mencoba
untuk menulis file PNG dan mendapat pesan kesalahan fatal seperti:
C
Ini karena modul PGPLOT Perl tidak secara otomatis terhubung dengan png dan z
perpustakaan. Jadi ketika Anda menginstal modul PGPLOT Perl (versi 2.19) dari CPAN,
jangan lakukan "instal PGPLOT", tetapi lakukan saja "dapatkan PGPLOT". Kemudian keluar dari CPAN dan secara manual
instal PGPLOT, panggil makefile sebagai berikut:
C/ Usr / lib>
dengan asumsi ada file seperti /usr/lib/libpng.so.*, /usr/lib/libz.so.*. Kemudian lakukan
standar "make;make test;make install;" urutan. Sekarang Anda dapat menulis file png dari
PDL!
EKSTENSI OF PDL
Q: 7.1 I am mencari untuk a paket untuk do XXX in PDL. Where akan I melihat untuk saya t?
Pemberhentian pertama adalah lagi "perldl" atau "pdl2" dan bantuan online atau dokumentasi PDL.
Sudah ada banyak fungsi di PDL yang mungkin tidak Anda sadari. Itu
cara termudah untuk mencari fungsionalitas adalah dengan menggunakan perintah "apropos":
pdl> sesuai dengan 'integral'
ceil Bulatkan ke nilai integral dalam format floating-point
floor Bulatkan ke nilai integral dalam format floating-point
Proyek intover melalui integral ke dimensi N-1
rint Putaran ke nilai integral dalam format titik-mengambang
Karena perintah yang sesuai bukanlah mesin pencari yang canggih, pastikan Anda mencari di a
beberapa topik terkait dan menggunakan frasa pendek.
Namun ada kemungkinan besar bahwa apa yang Anda butuhkan bukan merupakan bagian dari distribusi PDL. Anda
maka disarankan untuk memeriksahttp://pdl.perl.org> di mana ada daftar paket
menggunakan PDL. Jika itu tidak menyelesaikan masalah Anda, tanyakan pada milis, jika tidak ada yang lain
Anda mungkin mendapatkan bantuan yang memungkinkan Anda menghubungkan sendiri paket Anda dengan PDL, lihat
juga pertanyaan berikutnya.
Q: 7.2 Bisa I mengakses my C/FORTRAN perpustakaan rutinitas in PDL?
Ya, Anda bisa, sebenarnya ini sangat sederhana untuk banyak aplikasi sederhana. Apa yang Anda inginkan adalah
PDL pra-prosesor PP (PDL::PP ). Ini akan memungkinkan Anda membuat antarmuka sederhana ke C . Anda
rutin.
Dua fungsi yang perlu Anda pelajari (setidaknya pertama) adalah "pp_def" yang mendefinisikan
memanggil antarmuka ke fungsi, menentukan parameter input dan output, dan berisi
kode yang menautkan ke perpustakaan eksternal. Perintah lainnya adalah "pp_end" yang selesai
definisi PP. Untuk detailnya, lihat halaman manual PDL::PP, tetapi kami juga memiliki yang berfungsi
contoh di sini.
ganda delapan_sum(int n)
{
di aku;
jumlah ganda, x;
jumlah = 0.0; x=0.0;
untuk (i=1; i<=n; i++) {
x++;
jumlah += x/((4.0*x*x-1.0)*(4.0*x*x-1.0));
}
kembali 1.0/jumlah;
}
Kami di sini akan menunjukkan kepada Anda contoh bagaimana Anda menghubungkan kode C dengan PDL. Ini yang pertama
contoh dan akan menunjukkan cara mendekati angka 8...
Kode C ditunjukkan di atas dan merupakan fungsi sederhana yang mengembalikan ganda, dan mengharapkan
integer - jumlah istilah dalam jumlah - sebagai input. Fungsi ini dapat didefinisikan dalam
perpustakaan atau, seperti yang kita lakukan di sini, sebagai fungsi inline.
Kami akan menunda penulisan Makefile sampai nanti. Pertama kita akan membangun ".pd"
mengajukan. Ini adalah file yang berisi kode PDL::PP. Kami menyebutnya "delapan.pd" .
#
# pp_def mendefinisikan fungsi PDL.
#
pp_addhdr (
'
ganda delapan_sum(int n)
{
di aku;
jumlah ganda, x;
jumlah = 0.0; x=0.0;
untuk (i=1; i<=n; i++) {
x++;
jumlah += x/((4.0*x*x-1.0)*(4.0*x*x-1.0));
}
kembali 1.0/jumlah;
}
');
pp_def (
'delapan',
Pars => 'int a(); ganda [o]b();',
Kode => '$b()=delapan_sum($a());'
);
# Selalu pastikan Anda menyelesaikan deklarasi PP Anda dengan
#pp_selesai
pp_selesai();
Keunikan dengan contoh kami adalah bahwa kami telah memasukkan seluruh kode dengan "pp_addhdr"
alih-alih menautkannya. Ini hanya untuk tujuan contoh, dalam tipikal
aplikasi Anda akan menggunakan "pp_addhdr" untuk memasukkan file header. Perhatikan bahwa argumen untuk
"pp_addhdr" diapit tanda kutip.
Apa yang paling penting dalam contoh ini adalah perintah "pp_def". Argumen pertama
untuk ini adalah nama fungsi baru delapan , lalu muncul hash yang daging aslinya:
· Ini memberikan parameter input (di sini "a") dan parameter output (di sini "b"). Itu
yang terakhir ditunjukkan oleh specifier "[o]". Kedua argumen dapat memiliki tipe
spesifikasi seperti yang ditunjukkan di sini.
Banyak variasi dan fleksibilitas lebih lanjut dalam antarmuka dapat ditentukan. Melihat
"perldoc PDL::PP" untuk detailnya.
· Switch ini berisi kode yang harus dijalankan. Seperti yang Anda lihat, ini agak
campuran aneh dari C dan Perl, tetapi pada dasarnya sama seperti Anda menulisnya dalam C, tapi
variabel yang dilewatkan dari PDL diperlakukan berbeda dan harus dirujuk
dengan '$' sebelumnya.
Ada juga makro sederhana untuk meneruskan pointer ke data dan untuk mendapatkan nilai dari
jumlah Perl lainnya, lihat halaman manual untuk rincian lebih lanjut.
Terakhir perhatikan panggilan ke "pp_done()" di akhir file. Ini diperlukan di semua PP
file.
OKE. Jadi sekarang kami memiliki file dengan kode yang sangat ingin kami gunakan di Perl melalui PDL. Ke
melakukan ini kita perlu mengkompilasi fungsi, dan untuk melakukan itu kita memerlukan Makefile.
gunakan PDL::Core::Dev;
gunakan ExtUtils::MakeMaker;
PDL::Inti::Dev->import();
$paket = ["delapan.pd",Delapan,PDL::Delapan];
%hash = pdlpp_stdargs($paket);
TulisMakefile( %hash );
sub SAYA::postamble {pdlpp_postamble($paket)};
Kode di atas harus dimasukkan ke dalam file bernama Makefile.PL, yang selanjutnya harus dipanggil
dengan cara Perl standar: "perl Makefile.PL" . Ini akan memberi Anda Makefile dan
menjalankan "make" harus mengkompilasi modul untuk Anda dan "make install" akan menginstalnya untuk
Anda.
Q: 7.3 Seterpercayaapakah Olymp Trade? Kesimpulan bisa I antarmuka paket XXX in PDL?
Pertanyaan ini terkait erat dengan yang sebelumnya, dan seperti yang kami katakan di sana, PDL::PP
pra-prosesor adalah cara standar untuk menghubungkan paket eksternal dengan PDL. Yang paling
cara biasa menggunakan PDL::PP adalah dengan menulis rutin antarmuka singkat, lihat PDL::PP perldoc
halaman dan jawaban atas pertanyaan sebelumnya untuk contoh.
Namun juga dimungkinkan untuk menghubungkan paket ke PDL dengan menulis ulang fungsi Anda di
PDL::PP langsung. Ini bisa nyaman dalam situasi tertentu, khususnya jika Anda memiliki
rutinitas yang mengharapkan fungsi sebagai input dan Anda ingin melewatkan fungsi tersebut dengan Perl
fungsi untuk kenyamanan.
Halaman perldoc PDL::PP adalah sumber informasi utama untuk menulis ekstensi PDL::PP,
tetapi sangat berguna untuk mencari file dalam distribusi PDL sebanyak inti
fungsi ditulis dalam PDL::PP. Cari file yang diakhiri dengan ".pd" yang umumnya
akhiran yang diterima untuk file PDL::PP. Tetapi kami juga memiliki contoh sederhana di sini.
Contoh berikut akan menunjukkan cara menulis fungsi sederhana yang secara otomatis
memungkinkan threading. Untuk membuat ini ringkas, contohnya adalah fungsi yang hampir sepele, tetapi
tujuannya adalah untuk menunjukkan dasar-dasar penulisan antarmuka PDL::PP.
Kami akan menulis fungsi sederhana yang menghitung minimum, maksimum dan rata-rata dari a
kencing. Di mesin saya, fungsi yang dihasilkan 8 kali lebih cepat daripada fungsi bawaan
"stats" (tentu saja yang terakhir juga menghitung median).
Langsung saja. Ini kodenya (dari file bernama "quickstats.pd" )
#
pp_def('statistik cepat',
Pars => 'a(n); [o]rata-rata(); [o]maks(); [o]min()',
Code => '$GENERIC(a) curmax, curmin;
$GENERIK(a) tmp=0;
lingkaran(n) %{
tmp += $a();
if (!n || $a() > curmax) { curmax = $a();}
if (!n || $a() < curmin) { curmin = $a();}
%}
$rata-rata() = tmp/$UKURAN(n);
$maks() = kurmaks;
$min() = kurmin;
'
);
pp_selesai();
Di atas mungkin terlihat seperti campuran membingungkan dari C dan Perl, tetapi di balik keanehannya
sintaks terletak bahasa yang sangat kuat. Mari kita ambil baris demi baris.
Baris pertama menyatakan bahwa kita memulai definisi fungsi PDL:PP yang disebut
"statistik cepat".
Baris kedua sangat penting karena menentukan parameter input dan output dari
fungsi. a(n) memberi tahu kita bahwa ada satu parameter input yang akan kita rujuk sebagai "a"
yang diharapkan menjadi vektor dengan panjang n (demikian juga matriks, persegi dan
persegi panjang akan ditulis sebagai "a(n,n)" dan "a(n,m)" masing-masing). Untuk menunjukkan bahwa
sesuatu adalah parameter keluaran yang kami tempatkan "[o]" di depan nama mereka, jadi merujuk kembali
ke kode kita melihat bahwa avg, max dan min adalah tiga parameter output, yang semuanya adalah
skalar (karena mereka tidak memiliki ukuran dimensi yang ditunjukkan.
Baris ketiga memulai definisi kode yang pada dasarnya murni C tetapi dengan beberapa
fungsi yang nyaman. $GENERIC adalah fungsi yang mengembalikan tipe C dari argumennya -
di sini parameter input a. Jadi dua baris pertama dari bagian kode adalah variabel
deklarasi.
Konstruk loop(n) adalah fungsi kemudahan yang mengulang dimensi yang disebut n in
bagian parameter. Di dalam loop ini kami menghitung jumlah kumulatif dari input
vektor dan melacak nilai maksimum dan minimum. Akhirnya kami menetapkan hasil
nilai parameter keluaran.
Akhirnya kami menyelesaikan deklarasi fungsi kami dengan "pp_done()" .
Untuk mengkompilasi fungsi baru kita, kita perlu membuat Makefile, yang akan kita daftarkan sejak
pembuatannya dibahas dalam pertanyaan sebelumnya.
gunakan PDL::Core::Dev;
gunakan ExtUtils::MakeMaker;
PDL::Inti::Dev->import();
$package = ["quickstats.pd",Quickstats,PDL::Quickstats];
%hash = pdlpp_stdargs($paket);
TulisMakefile( %hash );
sub SAYA::postamble {pdlpp_postamble($paket)};
Contoh Makefile.PL
Fungsi statistik baru kami sekarang harus dikompilasi menggunakan cara Perl yang telah dicoba dan diuji: "perl
Makefile.PL; membuat" .
Anda harus bereksperimen dengan fungsi ini, mengubah perhitungan dan input dan output
parameter. Sehubungan dengan halaman perldoc PDL::PP ini akan memungkinkan Anda untuk dengan cepat
tulis rutinitas yang lebih maju secara langsung di PDL::PP.
Gunakan PDL::FAQp online menggunakan layanan onworks.net