EnglishFrenchSpanyol

Favicon OnWorks

PDL::FAQp - Dalam Talian di Awan

Jalankan PDL::Soalan Lazim dalam penyedia pengehosan percuma OnWorks melalui Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS

Ini ialah arahan PDL::FAQp yang boleh dijalankan dalam penyedia pengehosan percuma OnWorks menggunakan salah satu daripada berbilang stesen kerja dalam talian percuma kami seperti Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS.

JADUAL:

NAMA


PDL::Soalan Lazim - Soalan lazim tentang PDL

VERSION


Versi Soalan Lazim semasa: 1.004

DESCRIPTION


Ini ialah versi 1.004 Soalan Lazim PDL, koleksi soalan lazim tentang
PDL - Bahasa Data Perl.

TENTANG INI DOKUMEN


Q: 1.1 Lokasi kepada mencari ini dokumen
Anda boleh mendapatkan versi terkini dokumen ini di
<http://pdl.perl.org/?docs=FAQ&title=Frequently%20Asked%20Questions> .

Q: 1.2 Cara kepada Menyumbang kepada ini dokumen
Ini ialah versi Soalan Lazim PDL yang telah diolah semula dengan ketara. Oleh kerana banyak ralat mungkin ada
menyelinap masuk dan banyak kemas kini mungkin tidak berjaya. Anda digalakkan untuk membenarkannya
kami tahu tentang soalan yang anda fikir perlu dijawab dalam dokumen ini tetapi pada masa ini
bukan.

Begitu juga, jika anda fikir bahagian dokumen ini tidak jelas, sila beritahu penyelenggara Soalan Lazim
mengenainya. Di mana jawapan khusus diambil sepenuhnya daripada seseorang yang menyiarkan kepengarangan
harus ditunjukkan, beritahu penyelenggara FAQ jika tidak. Untuk maklumat yang lebih umum
pengakuan eksplisit tidak dibuat dalam teks, sebaliknya terdapat senarai yang tidak lengkap
penyumbang pada akhir dokumen ini. Sila hubungi penyelenggara FAQ jika anda rasa
susah payah oleh.

Hantar komen, penambahan, cadangan atau pembetulan anda ke senarai mel PDL di
[e-mel dilindungi]. Lihat S: 3.2 di bawah untuk mendapatkan arahan tentang cara menyertai mel
senarai.

UMUM SOALAN


Q: 2.1 Servis is PDL ?
PDL bermaksud Perl Tarikh Bahasa . Untuk mengatakannya dengan kata-kata Karl Glazebrook,
pemula projek PDL:

Konsep PDL adalah untuk memberikan kebolehan perl5 standard
untuk PADAT menyimpan dan CEPAT memanipulasi yang besar
Set data N-dimensi iaitu roti dan mentega
pengkomputeran saintifik. cth. $a=$b+$c boleh menambah dua
2048x2048 imej dalam hanya sebahagian kecil daripada saat.

Ia menyediakan banyak fungsi berguna untuk analisis saintifik dan berangka.

Bagi pembaca yang biasa dengan pakej penilaian data saintifik lain, mungkin berguna untuk
tambah bahawa PDL dalam banyak aspek serupa dengan IDL, MATLAB dan pakej yang serupa. Walau bagaimanapun, ia
cuba memperbaiki beberapa isu yang dianggap (oleh pengarang PDL) sebagai
kekurangan pakej sedia ada tersebut.

Q: 2.2 yang menyokong PDL? yang membangun ia?
PDL disokong oleh penggunanya. Sokongan tidak rasmi am untuk PDL disediakan melalui
senarai mel PDL ([e-mel dilindungi] , lihat di bawah).

Sebagai sambungan Perl (lihat S: 2.5 di bawah) ia ditumpukan kepada idea percuma dan terbuka
pembangunan yang dikemukakan oleh komuniti Perl. PDL telah dan sedang giat dibangunkan oleh a
kumpulan manusia di seluruh dunia yang menyelaraskan aktiviti mereka melalui
senarai mel pembangunan PDL ([e-mel dilindungi] , lihat S: 3.2 di bawah). Jika awak
ingin menyertai usaha berterusan untuk menambah baik PDL sila sertai senarai ini.

Q: 2.3 Mengapa lagi lain Tarikh Bahasa ?
Sebenarnya terdapat beberapa sebab dan setiap orang harus memutuskan sendiri yang mana
yang paling penting:

· PDL ialah "perisian percuma". Penulis PDL berpendapat bahawa konsep ini mempunyai beberapa
kelebihan: semua orang mempunyai akses kepada sumber -> penyahpepijatan yang lebih baik, mudah disesuaikan
untuk keperluan anda sendiri, boleh dikembangkan untuk tujuan anda, dsb... Berbanding dengan komersial
pakej seperti MATLAB dan IDL ini amat penting untuk pekerja yang
ingin membuat kerja di rumah dan tidak mampu membayar kos yang besar untuk membeli komersial
pakej untuk kegunaan peribadi.

· PDL adalah berdasarkan bahasa skrip yang berkuasa dan direka dengan baik: Perl. Berbeza dengan
bahasa analisis data saintifik/numerik lain yang telah direka bentuk menggunakan
ciri-ciri bahasa yang terbukti dan bukannya telah berkembang menjadi wujud dari awal.
Mentakrifkan struktur kawalan semasa ciri ditambah semasa pembangunan membawa kepada
bahasa yang sering kelihatan kekok dan dirancang dengan teruk untuk kebanyakan pakej sedia ada dengan
skop yang sama seperti PDL.

· Menggunakan Perl sebagai asas pengaturcara PDL mempunyai semua ciri hebat Perl padanya
tangan, sejak awal lagi. Ini termasuk ungkapan biasa, tatasusunan bersekutu
(cincang), antara muka yang direka dengan baik kepada sistem pengendalian, rangkaian, dsb. Pengalaman
telah menunjukkan bahawa walaupun dalam pengaturcaraan berorientasikan berangka ia selalunya sangat
berguna jika anda mempunyai akses mudah kepada separuh berangka yang berkuasa atau bukan berangka sepenuhnya
kefungsian juga. Sebagai contoh, anda mungkin ingin menawarkan hasil a
pengiraan rumit sebagai proses pelayan kepada proses lain pada rangkaian, mungkin
menerima input secara langsung daripada proses lain pada rangkaian. Menggunakan Perl dan sedia ada
Pakej sambungan Perl perkara seperti ini tidak ada masalah sama sekali (dan semuanya akan sesuai
ke dalam "skrip PDL" anda).

· Kebolehlanjutan dan kesalingoperasian yang sangat mudah kerana PDL ialah sambungan Perl;
sokongan pembangunan untuk sambungan Perl adalah bahagian penting Perl dan terdapat
sudah banyak sambungan kepada Perl standard tersedia secara percuma di rangkaian.

· Ciri bahasa integral Perl (ungkapan biasa, cincang, modul objek)
pembangunan dan pelaksanaan konsep utama PDL yang sangat memudahkan. Satu daripada
contoh yang paling menarik untuk perkara ini mungkin PDL::PP (lihat S: 6.16 di bawah), a
penjana kod/penghurai/pra-pemproses yang menjana fungsi PDL daripada ringkas
penerangan.

· Tiada satu pun bahasa data sedia ada mengikut peraturan bahasa Perl, yang mana pengarangnya
yakin dengan:

· TIMTOWTDI: Terdapat lebih daripada satu cara untuk melakukannya. Bahasa minimalis ialah
menarik untuk saintis komputer, tetapi untuk pengguna, sedikit redundansi
menjadikan perkara lebih mudah untuk diatasi dan membenarkan gaya pengaturcaraan individu -
sama seperti orang bercakap dengan cara yang berbeza. Bagi kebanyakan orang, ini sudah pasti akan menjadi a
sebab nak elak PDL ;)

· Perkara mudah adalah mudah, perkara rumit mungkin: Perkara yang sering dilakukan
sepatutnya mudah dilakukan dalam bahasa, sedangkan perkara yang jarang dilakukan tidak sepatutnya terlalu
rumit.

Semua bahasa sedia ada melanggar sekurang-kurangnya satu daripada peraturan ini.

· Sebagai projek untuk masa hadapan PDL harus boleh menggunakan ciri komputer super, cth.
keupayaan vektor/pemprosesan selari, pecutan GPGPU. Ini mungkin akan berlaku
dicapai dengan mempunyai PDL::PP (lihat S: 6.16 di bawah) menjana kod yang sesuai untuk itu
seni bina untuk mengeksploitasi ciri-ciri ini.

· [ isikan 111 sebab kegemaran peribadi anda di sini...]

Q: 2.4 Servis is PDL baik khususnya ?
Sekiranya anda belum tahu apakah ciri utama PDL dan apa yang boleh dilakukan
dengan mereka, berikut ialah senarai (semestinya terpilih) ciri utama:

PDL sangat sesuai untuk pengiraan matriks, pengendalian umum data berbilang dimensi,
pemprosesan imej, pengiraan saintifik am, aplikasi berangka. Ia menyokong I/O
untuk banyak format imej dan data yang popular, 1D (plot garis), 2D (imej) dan 3D (volume
visualisasi, plot permukaan melalui OpenGL - contohnya dilaksanakan menggunakan Mesa atau video
pemacu OpenGL kad), keupayaan paparan grafik dan melaksanakan banyak berangka dan
algoritma separuh berangka.

Melalui pra-pemproses yang berkuasa ia juga mudah untuk antara muka Perl ke C kegemaran anda
rutin, lebih banyak lagi di bawah.

Q: 2.5 Servis is yang sambungan antara PDL and Perl ?
PDL ialah pakej sambungan Perl5. Oleh itu, ia memerlukan pemasangan Perl5 sedia ada (lihat
di bawah) untuk dijalankan. Tambahan pula, kebanyakan PDL ditulis dalam Perl (+ beberapa fungsi teras yang
ditulis dalam C). Program PDL adalah (secara sintaksis) hanya skrip Perl yang kebetulan digunakan
beberapa fungsi yang dilaksanakan oleh pakej "PDL".

Q: 2.6 Servis do I perlu kepada menjalankan PDL on my mesin ?
Memandangkan PDL hanyalah pakej Perl5, anda perlu terlebih dahulu memasang Perl5 pada anda
mesin. Sehingga penulisan ini PDL memerlukan versi 5.8 perl, atau lebih tinggi. Maklumat lanjut
di mana dan bagaimana untuk mendapatkan pemasangan Perl boleh didapati di halaman utama Perl
<http://www.perl.org> dan di banyak tapak CPAN (jika anda tidak tahu apa CPAN ialah, semak
jawapan kepada soalan seterusnya).

Untuk membina PDL anda juga memerlukan pengkompil C yang berfungsi, sokongan untuk Xsubs, dan pakej
Extutils::MakeMaker. Jika anda tidak mempunyai pengkompil mungkin terdapat pengedaran binari
tersedia, lihat "Pengagihan binari" di bawah.

Jika anda boleh (atau tidak) mendapatkan PDL bekerja pada platform baharu (sebelum ini tidak disokong) yang kami lakukan
suka mendengarnya. Sila laporkan kejayaan/kegagalan anda kepada senarai mel PDL di
[e-mel dilindungi] . Kami akan melakukan yang terbaik untuk membantu anda memindahkan PDL ke sistem baharu.

Q: 2.7 Lokasi do I mendapatkan ia?
PDL tersedia sebagai pengedaran sumber dalam Komprehensif Perl Arkib rangkaian (Atau
CPAN) dan daripada halaman projek sourceforge.net di
. Arkib CPAN mengandungi bukan sahaja
Pengedaran PDL tetapi juga hampir semua perkara lain yang berkaitan dengan Perl. CPAN ialah
dicerminkan oleh berpuluh-puluh tapak di seluruh dunia. Tapak utama ialah <http://www.cpan.org>,
dan tapak CPAN tempatan (cermin) boleh didapati di sana. Dalam CPAN anda dapati yang terkini
versi PDL dikeluarkan dalam direktori /modules/by-module/PDL/. Laman utama PDL berada di
<http://pdl.perl.org> dan versi terkini juga boleh dimuat turun dari sana.

Q: 2.8 Servis do I mempunyai kepada membayar kepada mendapatkan PDL?
Kami berbesar hati kerana dapat memberi anda jawapan yang paling baik untuk soalan seperti
ini: PDL ialah *perisian percuma* dan semua sumber tersedia untuk umum. Tetapi masih ada
beberapa hak cipta untuk dipatuhi. Jadi tolong, cuba jadi baik seperti kami (pengarang PDL).
dan cuba untuk mematuhi mereka.

Oh, sebelum anda fikir ia percuma *sepenuhnya*: anda perlu meluangkan sedikit masa untuk menariknya
pengedaran dari jaring, susun dan pasang dan (mungkin) baca manual.

MENDAPAT BANTUAN/LAGI SYARIKAT


Q: 3.1 Lokasi boleh I mendapatkan maklumat on PDL?
Dokumentasi PDL lengkap tersedia dengan pengedaran PDL. Gunakan arahan
"perldoc PDL" untuk mula belajar tentang PDL.

Walau bagaimanapun, cara paling mudah untuk membiasakan diri dengan PDL adalah dengan menggunakan bantuan dalam talian PDL
kemudahan dari dalam shell PDL, "pdl2" Hanya taip "pdl2" pada gesaan sistem anda. sekali
anda berada di dalam "pdl2" jenis shell "help" . Menggunakan arahan "help" dan "apropos".
di dalam cangkerang anda sepatutnya dapat mencari jalan untuk mendokumentasikan.

Lebih baik lagi, anda boleh segera mencuba pengetahuan anda yang baru diperoleh tentang PDL dengan mengeluarkan
Perintah PDL/Perl terus pada baris arahan. Untuk menggambarkan proses ini, berikut adalah
rekod sesi "pdl2" biasa seorang pemula PDL (output panjang hanya secara simbolik
dihasilkan semula dalam pendakap ( ) ):

unix> pdl2
pdl> bantuan

pdl> bantu PDL::QuickStart

pdl> $a = pdl (1,5,7.3,1.0)
pdl> $b = terapung jujukan, 4, 4
pdl> bantu batin

pdl> $c = dalam $a, $b
pdl> p $c
[22.6 79.8 137 194.2]

Untuk sumber maklumat lanjut yang boleh diakses melalui Internet lihat seterusnya
Soalan.

Q: 3.2 Adakah terdapat lain PDL maklumat sumber on yang Internet?
Pertama sekali, untuk semua soalan berkaitan Perl semata-mata terdapat banyak sumber di internet.
Perkara yang baik untuk bermula ialah <http://www.perl.com> danhttp://www.perl.org>.

Laman utama PDL boleh diakses dengan menghalakan pelayar web anda ke <http://pdl.perl.org>.
Ia mempunyai banyak kebaikan untuk sesiapa yang berminat dengan PDL:

· Pengagihan PDL

· Dokumentasi dalam talian

· Penunjuk kepada arkib HTML senarai mel PDL

· Senarai platform yang PDL telah berjaya diuji.

· Berita tentang ciri yang ditambah baru-baru ini, perpustakaan dialihkan, dsb.

· Nama pemegang labu semasa untuk modul PDL yang berbeza (jika anda ingin tahu
maksudnya anda lebih baik melihat halaman web).

Jika anda berminat dengan PDL secara amnya anda boleh sertai mailing list PDL
[e-mel dilindungi]. Ini adalah forum untuk membincangkan isu pengaturcaraan dalam PDL, melaporkan pepijat,
dapatkan bantuan dengan masalah berkaitan PDL, dsb. Untuk melanggan, isi borang di
<http://mailman.jach.hawaii.edu/mailman/listinfo/perldl>.

Arkib yang boleh dicari dan versi hiperteks trafik dalam senarai ini (1997-2004) boleh
ditemui di <http://www.xray.mpe.mpg.de/mailing-lists/perldl/> . Mesej yang lebih baru
(sejak Jun 2005) boleh didapati di <http://mailman.jach.hawaii.edu/mailman/listinfo/perldl>
.

Jika anda berminat dengan semua butiran teknikal pembangunan PDL yang sedang berjalan, anda boleh
sertai senarai mel pembangun PDL [e-mel dilindungi] . Untuk melanggan, isikan
borang di <http://mailman.jach.hawaii.edu/mailman/listinfo/pdl-porters>.

Arkib yang boleh dicari dan versi hiperteks trafik dalam senarai ini (1997-2004) boleh
ditemui di <http://www.xray.mpe.mpg.de/mailing-lists/pdl-porters/> . Mesej yang lebih baru
(sejak Jun 2005) boleh didapati di
<http://mailman.jach.hawaii.edu/mailman/listinfo/pdl-porters>.

Siaran silang antara senarai ini hendaklah dielakkan melainkan terdapat a sangat alasan yang baik untuk
melakukan itu.

Q: 3.3 Servis is yang semasa versi of PDL ?
Sehingga penulisan ini (Soalan Lazim versi 1.004 pada 16 Sep 2013) versi stabil terkini ialah 2.006.
Versi stabil terkini hendaklah sentiasa tersedia dari tapak cermin CPAN berhampiran anda (lihat
Soalan 2.7 untuk maklumat di mana untuk mendapatkan PDL).

Versi PDL yang paling terkini (mungkin tidak stabil) boleh diperolehi daripada Git
repositori, lihat Soalan 4.10 dan pembangun CPAN berkala mengeluarkan kod Git akan
dibuat untuk tujuan ujian dan ketersediaan yang lebih umum. Pasca-PDL-2.006 semasa
keluaran pembangun PDL tersedia sebagai CHM/PDL-2.006_07.tar.gz .

Q: 3.4 I mahu kepada Menyumbang kepada yang lagi pembangunan of PDL. Cara boleh I membantu?
Dua cara yang boleh anda bantu dengan serta-merta ialah (1) menyertai Penguji CPAN untuk
PDL dan modul berkaitan, dan (2) membaca pruf dan menjelaskan dokumentasi PDL supaya
ia paling boleh digunakan untuk pengguna PDL, terutamanya pengguna baru.

Untuk mengambil bahagian dalam Penguji CPAN dan menyumbang laporan ujian, halaman
<http://wiki.cpantesters.org/wiki/QuickStart> mempunyai arahan untuk memulakan sama ada
Pengguna "CPAN" atau "CPANPLUS".

Jika anda mempunyai projek tertentu dalam fikiran anda harus menyemak sama ada orang lain sudah bekerja
padanya atau jika anda boleh mendapat manfaat daripada modul sedia ada. Lakukan dengan menyiarkan projek yang anda rancang
kepada senarai mel pembangun PDL di [e-mel dilindungi] . Lihat langganan
arahan dalam Soalan 3.2. Kami sentiasa mencari orang untuk menulis kod dan/atau
dokumentasi ;).

Q: 3.5 I berfikir I mempunyai ditemui a pepijat in yang semasa versi of PDL. Servis hendaklah I buat?
Pertama, pastikan pepijat/masalah yang anda temui belum lagi ditangani
di tempat lain dalam Soalan Lazim ini. Kedua, anda boleh menyemak arkib PDL yang boleh dicari
senarai mel untuk mengetahui sama ada pepijat ini telah dibincangkan. Jika anda masih belum
menemui sebarang penjelasan yang anda boleh hantar laporan pepijat [e-mel dilindungi] , atau melalui
pautan Bugs pada <http://pdl.perl.org> . Lihat BUANG fail dalam pengedaran PDL untuk
maklumat apa yang perlu disertakan. Jika anda tidak pasti, perbincangan melalui senarai mel perldl
boleh sangat membantu.

PEMASANGAN


Q: 4.1 I mempunyai masalah memasang PDL. Servis hendaklah I buat?
Mula-mula pastikan anda telah membaca fail tersebut MEMASANG dalam pengagihan. Ini mengandungi senarai
masalah biasa yang tidak perlu diulang di sini.

Seterusnya, semak fail perldl.conf untuk melihat sama ada dengan mengedit pilihan konfigurasi di dalamnya
fail anda akan berjaya membina PDL. Beberapa modul memerlukan tambahan
perisian yang dipasang, sila rujuk fail KEBERGANTUNGAN untuk butiran lanjut. Pastikan
untuk mengedit lokasi pakej ini dalam perldl.conf jika anda mempunyainya dalam bukan standard
lokasi.

N.B. Khusus shell Unix: Jika anda ingin menyimpan perldl.conf yang diedit untuk masa hadapan
membina hanya menyalinnya sebagai ~/.perldl.conf ke dalam direktori rumah anda di mana ia akan diambil
secara automatik semasa proses binaan PDL.

Juga, semak versi PDL yang sedia ada yang lain pada sistem binaan. PDL berbilang
pemasangan dalam PATH atau @INC yang sama boleh menyebabkan ujian yang membingungkan atau kegagalan binaan.

Jika anda masih tidak dapat membuatnya berfungsi dengan baik, sila serahkan laporan pepijat termasuk butiran
maklumat tentang masalah yang anda hadapi ke senarai mel perldl (
[e-mel dilindungi] , lihat juga di atas). Tindak balas selalunya cepat.

Q: 4.2 Adakah terdapat konfigurasi fail khususnya PDL I mempunyai kepada edit?
Kebanyakan pengguna tidak perlu mengedit sebarang fail konfigurasi secara manual. Walau bagaimanapun, dalam beberapa
kes anda mungkin perlu membekalkan beberapa maklumat tentang tempat yang janggal termasuk
fail/pustaka atau anda mungkin mahu melumpuhkan secara eksplisit membina beberapa PDL pilihan
modul. Semak fail MEMASANG and perldl.conf untuk maklumat lanjut.

Jika anda terpaksa mengedit secara manual perldl.conf dan gembira dengan hasil yang anda boleh simpan
fail berguna untuk rujukan masa hadapan. Letak dalam ~/.perldl.conf di mana ia akan diambil
secara automatik atau gunakan "perl Makefile.PL PDLCONF=your_file_name" pada kali seterusnya anda membina PDL.

Q: 4.3 Do I perlu lain perisian khususnya berjaya operasi?
Untuk fungsi asas PDL anda tidak memerlukan sebarang perisian tambahan. Walau bagaimanapun, sebahagian daripada
modul PDL pilihan termasuk dalam pengedaran (terutamanya kebanyakan grafik dan beberapa I/O
modul) memerlukan perpustakaan/program lain tertentu untuk dipasang. Semak fail
KEBERGANTUNGAN dalam pengedaran untuk butiran dan arahan tentang cara mendapatkannya.

Q: 4.4 Cara boleh I memasang PDL in a tidak standard lokasi?
Untuk memasang PDL di lokasi bukan standard, gunakan pilihan INSTALL_BASE dalam "perl
Langkah konfigurasi Makefile.PL". Contohnya, "perl Makefile.PL INSTALL_BASE=/mydir/perl5"
akan mengkonfigurasi PDL untuk dipasang ke dalam pokok yang berakar pada "/mydir/perl5". Untuk butiran lanjut
lihat "Bagaimana cara saya menyimpan modul/direktori perpustakaan saya sendiri?" dalam perlfaq8 dan bahagian seterusnya.
Alternatif lain ialah menggunakan local::lib untuk melakukan penyenaraian berat untuk yang diperlukan
konfigurasi.

Q: 4.5 Cara boleh I kekuatan a sepenuhnya membersihkan pemasangan?
Untuk menjamin pemasangan PDL yang bersih sepenuhnya, anda perlu memadam terlebih dahulu
fail dan folder pemasangan semasa. Ini akan menjadi semua direktori bernama "PDL" dalam
Laluan Perl @INC, fail bernama "*Pdlpp*" dalam mana-mana direktori "Inline" dan program "pdl,
pdldoc, pdl2, perldl dan pptemplate". Kemudian bina dan pasang seperti biasa. Ini ialah
lebih mudah untuk dijejaki jika anda sentiasa memasang "PDL" ke lokasi yang tidak standard.
Lihat S: 4.4 di atas.

BINARI AGIHAN


Q: 4.5 Servis perduaan Pengagihan adalah ada?
Maklumat tentang taburan binari PDL boleh didapati di <http://pdl.perl.org> . Pada
kini terdapat pengedaran binari PDL untuk Linux (RedHat dan Debian), FreeBSD, Mac
OS X dan Windows, walaupun ia mungkin bukan versi terbaharu.

Jika seseorang berminat untuk menyediakan pengedaran binari untuk seni bina lain, itu
amat dialu-alukan. Beritahu kami di [e-mel dilindungi] senarai mel. Juga
semak pengurus pakej pengedaran Linux anda kerana ramai yang kini termasuk PDL. PPM untuk win32
versi (kedua-dua 32bit dan 64bit) juga tersedia.

Q: 4.6 Adakah PDL menjalankan on Linux? (Dan apa mengenai pakej?)
Ya, PDL berjalan di Linux dan sememangnya banyak pembangunan telah dilakukan di bawah Linux.
pada <http://pdl.perl.org> anda boleh mencari pautan ke pakej untuk beberapa yang utama
pengagihan. Semak juga pengurus pakej pengedaran anda (yum, apt, urpmi, ...) sebagai
PDL kini ditemui oleh kebanyakan daripada mereka.

Q: 4.7 Adakah PDL menjalankan di bawah Windows?
PDL dibina dengan baik pada Win32 menggunakan penyusun MinGW atau Microsoft. Lihat win32/INSTALL fail
dalam pengedaran sumber PDL untuk butiran. Penyusun lain belum diuji--input
adalah dialu-alukan. Terdapat juga pengedaran PDL melalui ppm ActiveState, walaupun ia
mungkin tidak selalunya versi terkini. PDL-2.006 dibina di luar kotak pada Strawberry
Perl dan ActiveState Perl.

CVS, GIT, DAN BERTERUSAN PEMBANGUNAN


Q: 4.8 Can I mendapatkan PDL melalui CVS?
Tidak. Pembangunan PDL telah dijalankan dengan repositori CVS dari Disember 1999 hingga April 2009.
Pada April 2009 projek itu bertukar kepada sistem kawalan versi Git (lihat
<http://git-scm.com>).

Q: 4.9 Cara do I mendapatkan PDL melalui Git?
Andaikan anda telah memasang Git pada sistem anda dan ingin memuat turun kod sumber projek
ke dalam direktori "PDL". Untuk mendapatkan akses baca sahaja kepada repositori, anda menaip di
baris arahan

git clone git://git.code.sf.net/p/pdl/code pdl-code

Untuk pembangun PDL rasmi, untuk mendapatkan akses baca/tulis kepada jenis repositori di
baris arahan

git clone ssh://[e-mel dilindungi]/p/pdl/kod kod-pdl

Q: 4.10 I mempunyai a masalah bersama yang Git versi, bagaimana do I menyemak if seseorang mempunyai dikemukakan a
tampalan?
Sistem Sourceforge mengandungi pengurus tampalan yang mengandungi tampalan yang belum
telah digunakan untuk pengagihan. Ini boleh diakses melalui menu Tiket di PDL
Halaman projek Sourceforge <http://sourceforge.net/projects/pdl>.

Di samping itu, jika anda tidak melanggan senarai mel, semak arkib
senarai mel "pdl-porters" dan "perldl". Lihat Soalan 3.2 untuk butiran.

Q: 4.11 I mempunyai mendapat pemaju mengakses kepada Git, bagaimana do I upload my perubahan?
Perkara pertama yang perlu anda lakukan ialah membaca dokumentasi Git dan mempelajari asasnya
Git. Terdapat banyak sumber yang boleh didapati dalam talian. Tetapi inilah asasnya:

Sebelum anda memuat naik perubahan anda, serahkannya ke repositori ANDA

git add ...
git komit

atau gabungkan kedua-duanya dengan

git commit -a

Kemudian tarik masuk sebarang perubahan yang telah dibuat oleh orang lain

git pull asal

Uji PDL sebelum anda menolaknya ke repositori utama. Jika kod itu rosak untuk anda,
maka kemungkinan besar ia rosak untuk orang lain dan mereka tidak akan gembira untuk mempunyai PDL terbaru mereka
gagal membina! NOTA: git menjadikannya sangat mudah untuk mengekalkan cabang pembangunan yang berasingan.
[ TBD, berikan maklumat tentang cara ].

Kemudian kemas kini repositori kongsi (di SF.net) dengan perubahan anda

tuan induk asal tekan

PDL ISTILAH


Q: 5.1 Servis is menjalar (adalah PDL a pembaca berita) ?
Malangnya, dalam konteks PDL istilah threading boleh mempunyai dua berbeza (tetapi
berkaitan) maksud:

· Apabila disebut dalam MEMASANG arahan dan mungkin semasa proses binaan yang kami ada
maksud sains komputer biasa berbilang benang dalam fikiran (berguna terutamanya pada
mesin atau kluster berbilang pemproses)

· Operasi pemisahan PDL pada piddles (seperti yang dinyatakan dalam dokumen pengindeksan) ialah
lelaran operasi asas ke atas sub-keping piddle yang sesuai, cth. dalaman
produk "dalaman $a, $b" daripada (3) pdl $a dan (3,5,4) pdl $b menghasilkan (5,4) piddle
di mana setiap nilai adalah hasil darab dalam bagi (3) pdl dengan (3) sub-slice
daripada (3,5,4) piddle. Untuk butiran semak PDL::Indexing

Benang PDL membawa secara semula jadi kepada kod yang berpotensi selari yang boleh menggunakan berbilang
benang pada mesin/rangkaian berbilang pemproses; di sana anda mempunyai hubungan antara
dua jenis penggunaan istilah.

Q: 5.2 Servis is a piddle?
Nah, pembolehubah skalar PDL (yang merupakan contoh kelas objek Perl tertentu,
iaitu benda yang diberkati (lihat "perldoc perlobj")) adalah dalam bahasa PDL biasa yang sering dipanggil
piddles (contohnya, semak arkib senarai mel). Err, jelas? Jika tidak, gunakan sahaja
istilah itu piddle apabila anda merujuk kepada pembolehubah PDL (contoh objek PDL seperti yang anda mungkin
ingat) tanpa mengira data sebenar yang terkandung dalam pembolehubah PDL.

TEKNIKAL SOALAN


Q: 6.1 Servis is perldl? Servis is pdl2?
Kadangkala "perldl" ("pdl2") digunakan sebagai sinonim untuk PDL. Tegasnya, bagaimanapun,
nama "perldl" ("pdl2") dikhaskan untuk cangkerang kecil yang disertakan dengan PDL
pengedaran dan sepatutnya digunakan untuk prototaip interaktif skrip PDL.
Untuk butiran semak perldl atau pdl2.

Q: 6.2 Cara do I mendapatkan on-line membantu khususnya PDL?
Cuma taip "help" (pintasan = "?") pada gesaan shell "pdl2" dan teruskan dari sana.
Satu lagi arahan berguna ialah arahan "apropos" (pintasan = "??"). Cuba juga "demo"
arahan dalam shell "perldl" atau "pdl2" jika anda baru menggunakan PDL.

MANIPULASI OF PIDDLES


Q: 6.3 I mahu kepada mengakses yang ketiga elemen of a pdl tetapi $a[2] tidak bekerja ?!
Lihat jawapan kepada soalan seterusnya mengapa sintaks tatasusunan Perl biasa tidak berfungsi untuk piddles.

Q: 6.4 . docs berkata piddles adalah beberapa jenis of susunan. Tetapi mengapa tidak yang Perl pelbagai sintaks
bekerja bersama piddles kemudian ?
OK, anda betul dalam satu cara. Dokumen mengatakan bahawa piddles boleh dianggap sebagai tatasusunan. Lagi
secara khusus, ia berkata ( PDL::QuickStart ):

Saya dapati apabila menggunakan Bahasa Data Perl ia adalah paling berguna
untuk memikirkan pembolehubah Perl @x standard sebagai "senarai" generik
"benda" dan pembolehubah PDL seperti $x sebagai "tatasusunan" yang boleh
terkandung dalam senarai atau cincang.

Jadi, walaupun piddles boleh dianggap sebagai beberapa jenis tatasusunan berbilang dimensi tidak
tatasusunan dalam erti kata Perl. Sebaliknya, dari sudut pandangan Perl mereka adalah istimewa
kelas (yang kini dilaksanakan sebagai penunjuk legap kepada beberapa perkara dalam ingatan) dan
oleh itu memerlukan fungsi khas (atau 'kaedah' jika anda menggunakan versi OO) untuk mengakses
elemen individu atau julat elemen. Fungsi/kaedah untuk menyemak adalah "di" /
"set" (lihat bahagian 'Bahagian' dalam PDL::QuickStart ) atau fungsi "slice" yang berkuasa
dan rakan-rakan (lihat PDL::Slices dan PDL::Indexing dan terutamanya PDL::NiceSlice ).

Akhir sekali, untuk mengelirukan anda sepenuhnya, anda boleh mempunyai tatasusunan piddle Perl, mis. $spec[3] boleh
rujuk pdl yang mewakili ,cth, spektrum, dengan $spec[3] ialah elemen keempat bagi
Senarai Perl (atau tatasusunan ;) @spec . Ini mungkin mengelirukan tetapi sangat berguna!

Q: 6.5 Cara do I concatenate piddles?
Kebanyakan orang akan cuba membentuk piddle baru daripada piddle lama menggunakan beberapa variasi ke atas
theme: "$a = pdl([$b, 0, 2])" , tetapi ini tidak berfungsi. Cara mencantumkan piddle ialah
untuk menggunakan fungsi "kucing" (lihat juga "tambah" dan "gam"). Begitu juga anda boleh membelah piddles
menggunakan arahan "anjing" .

Q: 6.6 Kadang-kadang I am mendapatkan ini pelik keputusan apabila menggunakan di tempat operasi?
Soalan ini berkaitan dengan fungsi "inplace". Daripada dokumentasi (lihat
PDL::Mula Pantas):

Kebanyakan fungsi, cth. log(), kembalikan hasil iaitu a
transformasi hujah mereka. Ini menjadikan untuk kebaikan
amalan pengaturcaraan. Bagaimanapun banyak operasi boleh dilakukan
"di tempat" dan ini mungkin diperlukan apabila tatasusunan besar berada di dalam
penggunaan dan memori adalah pada premium. Untuk keadaan ini
operator inplace() disediakan yang menghalang salinan tambahan
dan membenarkan hujah diubah suai. cth.:

$x = log($array); # $array tidak terjejas
log( inplace($bigarray) ); # $bigarray berubah di situ

Dan juga dari doc !!:

Jelas sekali apabila digunakan dengan beberapa fungsi yang tidak boleh
digunakan secara in situ (cth. convolve()) kesan yang tidak dijangka mungkin
berlaku!

Q: 6.7 Servis is ini pelik penggunaan of yang rentetan penggabungan operator ".=" in PDL
skrip?
Lihat soalan seterusnya mengenai tugasan dalam PDL.

Q: 6.8 Mengapa adalah terdapat 2 berbeza jenis of tugasan in PDL ?
Ini disebabkan oleh fakta bahawa pada masa ini pengendali tugasan "=" membenarkan sahaja
lebihan muatan terhad. Untuk beberapa tujuan PDL ternyata perlu ada
lebih kawalan ke atas lebihan beban pengendali tugasan. Oleh itu, PDL meneliti
operator ".=" untuk jenis tugasan tertentu.

Q: 6.9 Cara do I menetapkan a menetapkan of nilai in a piddle?
Dalam Perl 5.6.7 dan lebih tinggi, tugasan ini boleh dibuat menggunakan subrutin nilai:

pdl> $a = turutan(5); p $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 maklumat lanjut. PDL juga menyokong sintaks kepingan yang lebih seperti 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 apabila berlari di bawah yang perl penyahpepijat ini terpaksa
dilakukan menggunakan pembolehubah sementara:

pdl> $a = turutan(5); p $a
[0 1 2 3 4]
pdl> $tmp = $a->slice('1:2'); p $tmp;
[1 2]
pdl> $tmp .= pdl([5, 6]); # Nota .= !!
pdl> p $a
[0 5 6 3 4]

Ini juga boleh dijadikan satu ungkapan, yang sering dilihat dalam kod PDL:

pdl> ($tmp = $a->slice('1:2')) .= pdl([5,6])
pdl> p $a
[0 5 6 3 4]

Q: 6.10 Can I penggunaan a piddle in a bersyarat ungkapan?
Ya, anda boleh, tetapi tidak seperti yang anda mungkin cuba dahulu. Tidak boleh menggunakan a
piddle terus dalam ungkapan bersyarat kerana ini biasanya kurang ditakrifkan. Sebaliknya
PDL mempunyai dua fungsi yang sangat berguna: "mana-mana" dan "semua" . Gunakan ini untuk menguji jika ada atau semua
elemen dalam piddle memenuhi beberapa kriteria:

pdl> $a=pdl ( 1, -2, 3);
pdl> print '$a mempunyai sekurang-kurangnya satu elemen < 0' jika (mana-mana $a < 0);
$a mempunyai sekurang-kurangnya satu elemen < 0

pdl> print '$a is not positive definite' melainkan (semua $a > 0);
$a tidak pasti positif

Q: 6.11 logik pengendali and piddles - '||' and '&&' tidak kerja!
Ia adalah masalah biasa yang anda cuba membuat tatasusunan topeng atau sesuatu yang serupa menggunakan a
membina seperti

$mask = which($piddle > 1 && $piddle < 2); # tidak betul

ini tidak tidak kerja! Apa yang anda cari ialah bitwise pengendali logik '|' dan
'&' yang berfungsi berdasarkan elemen demi elemen. Jadi ia sangat mudah: Jangan gunakan
pengendali logik pada piddle berbilang elemen kerana itu benar-benar tidak masuk akal, sebaliknya
tulis contoh sebagai:

$mask = which($piddle > 1 & $piddle < 2);

yang berfungsi dengan betul.

ADVANCED TOPIK


Q: 6.12 Servis is a sifar pdl ?
"null" ialah token khas untuk 'piddle kosong'. Pdl null boleh digunakan untuk membenderakan kepada PDL
fungsi bahawa ia harus mencipta piddle bersaiz dan bertaip yang sesuai. Menyeimbangkan piddles boleh
digunakan di tempat di mana fungsi PDL menjangkakan output or sementara hujah. Output and
sementara hujah dibenderakan dalam tanda tangan fungsi PDL dengan "[o]" dan
"[t]" kelayakan (lihat soalan seterusnya jika anda tidak tahu apa yang tanda tangan daripada fungsi PDL
ialah). Sebagai contoh, anda boleh menggunakan fungsi "sumover" seperti berikut:

sumover $a, $b=null;

yang bersamaan dengan

$b = sumover $a;

Jika ini nampaknya masih agak keruh, semak PDL::Indexing dan PDL::PP untuk butiran tentang panggilan
konvensyen, yang tanda tangan and menjalar (lihat juga di bawah).

Q: 6.13 Servis is yang tanda tangan of a PDL fungsi ?
. tanda tangan sesuatu fungsi ialah konsep penting dalam PDL. Banyak (tetapi bukan semua) PDL
fungsi mempunyai a tanda tangan yang menentukan hujah dan mereka (minimum)
dimensi. Sebagai contoh, lihat tandatangan fungsi "maksimum":

'a(n); [o] b;'

ini mengatakan bahawa "maksimum" mengambil dua hujah, yang pertama adalah (sekurang-kurangnya) satu-
dimensi manakala yang kedua adalah dimensi sifar dan an output hujah (ditandakan oleh
kelayakan "[o]". Jika fungsi dipanggil dengan piddles dimensi yang lebih tinggi
fungsi akan berulang kali dipanggil dengan hirisan piddles ini yang sesuai
dimensi (ini dipanggil menjalar dalam PDL).

Untuk butiran dan penjelasan lanjut rujuk PDL::Indexing dan PDL::PP .

Q: 6.14 Cara boleh I subclass (warisi daripada) piddles?
Jawapan ringkasnya ialah: baca PDL::Objects (cth. taip "help PDL::Objects" dalam perldl or
pdl2 cangkerang).

Jawapan yang lebih panjang (diekstrak daripada PDL::Objects ): Memandangkan objek PDL adalah legap
merujuk kepada struktur C, tidak mungkin untuk melanjutkan kelas PDL dengan mis. data tambahan melalui
subkelas (seperti yang anda boleh lakukan dengan objek Perl berasaskan hash). Untuk mengelakkan masalah ini
PDL mempunyai sokongan terbina dalam untuk melanjutkan kelas PDL melalui mempunyai-a hubungan untuk diberkati
cincang. Anda boleh mendapatkan MEMPUNYAI-A berkelakuan seperti IALAH hanya kerana anda menetapkan objek PDL
kepada atribut bernama "PDL" dan takrifkan semula kaedah mulakan(). Sebagai contoh:

pakej FOO;

@FOO::ISA = qw(PDL);
sub initialize {
$class saya = shift;
$diri saya = {
creation_time => time(), # sambungan yang diperlukan :-)
PDL => PDL->null, # digunakan untuk menyimpan objek PDL
};
memberkati $diri, $kelas;
}

Untuk contoh lain semak skrip t/subkelas.t dalam pengagihan PDL.

Q: 6.15 Servis on bumi is ini aliran data barangan ?
Dataflow ialah projek percubaan yang anda tidak perlu risaukan diri anda (ia
tidak boleh mengganggu pengaturcaraan biasa anda). Namun, jika anda ingin tahu, miliki a
lihat PDL::Dataflow . Terdapat aplikasi yang akan mendapat manfaat daripada ciri ini (dan
ia sudah pun berfungsi di belakang tabir).

Q: 6.16 Servis is PDL::PP?
Jawapan mudah: PDL::PP ialah kedua-dua gam antara perpustakaan luaran dan PDL dan ringkas
bahasa untuk menulis fungsi PDL.

Jawapan yang lebih panjang sedikit: PDL::PP digunakan untuk menyusun definisi yang sangat ringkas ke dalam XSUB
rutin yang dilaksanakan dalam C yang boleh dipanggil dengan mudah daripada PDL dan yang secara automatik
menyokong threading, aliran data dan perkara lain tanpa anda perlu risau mengenainya.

Untuk butiran lanjut, semak PDL::PP dan bahagian di bawah mengenai Sambungan PDL.

Q: 6.17 Servis berlaku apabila I mempunyai beberapa rujukan kepada yang sama PDL objek in berbeza
pembolehubah (pengklonan, dan lain-lain?) ?
Piddles berkelakuan seperti rujukan Perl dalam banyak aspek. Jadi apabila anda berkata

$a = pdl [0,1,2,3];
$b = $a;

kemudian kedua-dua $b dan $a menunjuk ke objek yang sama, cth. kemudian berkata

$b++;

*tidak* akan membuat salinan piddle asal tetapi hanya menambah pada tempatnya, yang mana anda
boleh meyakinkan diri sendiri dengan berkata

cetak $a;
[1 2 3 4]

Ini tidak boleh disalah anggap sebagai aliran data yang menghubungkan beberapa objek *berbeza*
bahawa perubahan data disebarkan antara piddle yang dipautkan (walaupun, di bawah tertentu
keadaan, piddles dataflown boleh berkongsi secara fizikal data yang sama).

Adalah penting untuk mengekalkan "sifat rujukan" piddles dalam fikiran apabila melepasi piddles
ke dalam subrutin. Jika anda mengubah suai input piddles anda mengubah suai hujah asal, tidak a
salinannya. Ini berbeza daripada beberapa bahasa pemprosesan tatasusunan lain tetapi dibuat untuk
pemindahan piddle yang sangat cekap antara subrutin. Jika anda tidak mahu mengubah suai
hujah asal tetapi sebaliknya salinannya hanya buat salinan secara eksplisit (contoh ini juga
menunjukkan cara menyemak dengan betul untuk jelas permintaan untuk memproses di tempat, dengan andaian
rutin anda boleh berfungsi di tempat):

sub myfunc {
my $pdl = shift;
jika ($pdl->is_inplace) {
$pdl->set_inplace(0)
} Lain {
# ubah suai salinan secara lalai
$pdl = $pdl->salinan
}
$pdl->set(0,0);
pulangkan $pdl;
}

PELBAGAI


Q: 6.18 Servis I / O format adalah disokong by PDL ?
Versi semasa PDL sudah menyokong beberapa format I/O yang berbeza.
Walau bagaimanapun, ia tidak selalunya jelas modul mana yang melaksanakan format mana. Untuk membantu anda mencari
modul yang sesuai untuk format yang anda perlukan, berikut ialah senarai pendek senarai semasa
Format I/O dan petunjuk dalam modul mana untuk mencari pelaksanaan:

· Format I/O mentah (perduaan) buatan sendiri untuk PDL dilaksanakan oleh modul FastRaw

· Modul FlexRaw melaksanakan kaedah generik untuk input dan output data `mentah'
tatasusunan. Khususnya, ia direka untuk membaca output daripada FORTRAN 77 UNFORMATTED
fail dan fungsi "tulis" peringkat rendah C, walaupun jika fail dimampatkan atau
gzip.

Ada kemungkinan bahawa fungsi FastRaw akan disertakan dalam modul FlexRaw
pada suatu masa di masa hadapan.

· FITS I/O dilaksanakan oleh fungsi "wfits"/"rfits" dalam PDL::IO::FITS .

· Fail ASCII I/O dalam pelbagai format boleh dicapai dengan menggunakan "rcols" dan "rgrep"
fungsi, juga dalam PDL::IO::Misc .

· PDL::IO::Pic melaksanakan antara muka kepada penapis NetPBM/PBM+ untuk membaca/menulis beberapa
format imej popular; turut disokong ialah output jujukan imej sebagai filem MPEG,
GIF animasi dan pelbagai jenis format video lain.

· Pada CPAN anda boleh menemui modul PDL::NetCDF yang berfungsi dengan arus yang dikeluarkan
versi PDL 2.006.

Untuk butiran lanjut rujuk senarai lebih terperinci dalam dokumentasi PDL::IO atau
dokumentasi untuk modul individu.

Q: 6.19 Cara boleh I timbunan a menetapkan of 2D tatasusunan (imej) ke dalam a 3D piddle?
Dengan mengandaikan semua tatasusunan mempunyai saiz yang sama dan dalam beberapa format diiktiraf oleh "rpic" (lihat
PDL::IO::Pic ) anda boleh katakan:

gunakan PDL::IO::Pic;
@nama = qw/nama1.tif .... namaN.tif/; # beberapa nama fail
$dummy = PDL->rpic($nama[0]);
$cube = PDL->sifar($dummy->type,$dummy->dims,$#nama+1); # buat piddle 3D
untuk (0..$#nama) {
# ini adalah tugasan slice
($tmp = $cube->slice(":,:,($_)")) .= PDL->rpic($nama[$_]);
}

or

$cube(:,:,($_)) .= PDL->rpic($nama[$_]);

untuk tugasan kepingan menggunakan sintaks PDL::NiceSlice baharu dan tugasan Lvalue.

Gelung for membaca imej sebenar ke dalam piddle 2D sementara yang nilainya kemudian
diperuntukkan (menggunakan operator ".=" yang terlebih beban) kepada kepingan piddle 3D yang sesuai
$kiub .

Q: 6.20 Lokasi adalah ujian fail khususnya yang grafik modul?
Jawapan ini digunakan terutamanya untuk PDL::Graphics::TriD (grafik 3D bebas peranti PDL
model) yang paling rumit dalam hal ini. Anda dapati beberapa skrip ujian dalam
Demo/TriD dalam pengedaran. Terdapat juga 3dtest.pl and line3d.pl dalam
Direktori PDL/Contoh/TriD. Selepas anda membina PDL anda boleh lakukan:

perl -Mblib Contoh/TriD/3dtest.pl

perl -Mblib Contoh/TriD/line3d.pl

untuk mencuba dua program ujian TriD. Mereka hanya menjalankan satu fungsi TriD setiap satu tetapi mereka
kesederhanaan menjadikannya mudah untuk nyahpepijat jika diperlukan dengan penyahpepijat Perl, lihat perldbug.

Program dalam direktori Demo boleh dijalankan dengan paling mudah daripada "perldl" atau "pdl2"
shell interaktif:

perl -Mblib perldl atau perl -Mblib Perldl2/pdl2

diikuti dengan "demo 3d" atau "demo 3d2" pada gesaan. "demo" dengan sendirinya akan memberikan anda senarai
daripada tunjuk cara PDL yang tersedia.

Anda boleh menjalankan skrip ujian dalam direktori Demos/TriD secara manual dengan menukar kepada itu
direktori dan berjalan

perl -Mblib

di mana "testfile" ; hendaklah sepadan dengan corak "ujian[3-9].p" dan lihat hasilnya. Beberapa
ujian harus memaparkan tetingkap di mana anda boleh mengawal (memutar) objek 3D dengan
tetikus. Cuba gunakan butang tetikus 1 untuk memusing objek dalam ruang 3D, butang tetikus 3 ke
zum masuk dan keluar, dan 'q' untuk mara ke peringkat ujian seterusnya.

Q: 6.21 Servis is TriD or PDL::TriD or PDL::Grafik::TriD?
Soalan seperti ini sepatutnya menjadi perkara yang telah berlalu dengan sistem bantuan dalam talian PDL masuk
tempat. Cuba sahaja (selepas pemasangan):

un*x> pdl2
pdl> apropos trid

Semak output untuk mengesan hits yang menjanjikan dan kemudian cuba cari beberapa daripadanya, mis.

pdl> bantu PDL::Graphics::TriD

Ambil perhatian bahawa kes penting dengan "bantuan" tetapi bukan dengan "apropos" .

Q: 6.22 PGPLOT tidak tidak menulis keluar PNG fail.
Terdapat beberapa sumber masalah dengan fail PGPLOT dan PNG. Pertama, apabila menyusun
pgplot perpustakaan, pastikan anda menyahkomen entri PNG dalam pemandu.senarai fail. Kemudian
apabila menjalankan 'make' anda mungkin mendapat ralat seperti

C

Untuk membetulkannya, cari baris dalam 'makefile' yang bermula dengan 'pndriv.o:' (ia berdekatan dengan
bawah). Tukar, sebagai contoh, ./png.h kepada /usr/include/png.h, jika di situlah pengepala anda
fail adalah (anda mempunyai pakej libpng dan libz devel, bukan?). Lakukan ini untuk semua
empat entri pada baris itu, kemudian kembali dan jalankan "buat".

Kedua, jika anda sudah memasang modul PGPLOT Perl dan PDL, anda mungkin mencuba
untuk menulis fail PNG dan mendapat mesej ralat maut seperti:

C

Ini kerana modul PGPLOT Perl tidak dipaut secara automatik terhadap png dan z
perpustakaan. Jadi apabila anda memasang modul PGPLOT Perl (versi 2.19) daripada CPAN,
jangan lakukan "pasang PGPLOT", tetapi hanya "dapatkan PGPLOT". Kemudian keluar dari CPAN dan secara manual
pasang PGPLOT, memanggil makefile dengan demikian:

C/ usr / lib>

dengan mengandaikan bahawa terdapat fail seperti /usr/lib/libpng.so.*, /usr/lib/libz.so.*. Kemudian lakukan
standard "buat; buat ujian; buat pemasangan;" urutan. Kini anda boleh menulis fail png dari
PDL!

PERLUASAN OF PDL


Q: 7.1 I am mencari khususnya a pakej kepada do XXX in PDL. Lokasi hendaklah I melihat khususnya ia?
Perhentian pertama sekali lagi ialah "perldl" atau "pdl2" dan bantuan dalam talian atau dokumentasi PDL.
Sudah terdapat banyak fungsi dalam PDL yang mungkin anda tidak sedari. The
cara termudah untuk mencari fungsi adalah dengan menggunakan arahan "apropos":

pdl> apropos 'integral'
ceil Bundarkan kepada nilai kamiran dalam format titik terapung
floor Bundarkan kepada nilai kamiran dalam format titik terapung
ke dalam Projek melalui integral kepada dimensi N-1
rint Bundarkan kepada nilai kamiran dalam format titik terapung

Memandangkan arahan apropos bukanlah enjin carian yang canggih, pastikan anda mencari pada a
beberapa topik yang berkaitan dan menggunakan frasa pendek.

Walau bagaimanapun, terdapat kemungkinan besar bahawa apa yang anda perlukan bukan sebahagian daripada pengedaran PDL. awak
kemudian dinasihatkan untuk menyemak <http://pdl.perl.org> di mana terdapat senarai pakej
menggunakan PDL. Jika itu tidak menyelesaikan masalah anda, tanya pada senarai mel, jika tidak ada yang lain
anda mungkin mendapat bantuan yang akan membolehkan anda antara muka pakej anda dengan PDL sendiri, lihat
juga soalan seterusnya.

Q: 7.2 Can I mengakses my C/FORTRAN perpustakaan rutin in PDL?
Ya, anda boleh, sebenarnya ia sangat mudah untuk banyak aplikasi mudah. Apa yang anda mahukan ialah
PDL pra-pemproses PP (PDL::PP ). Ini akan membolehkan anda membuat antara muka mudah untuk C anda
rutin.

Dua fungsi yang perlu anda pelajari (sekurang-kurangnya pertama) ialah "pp_def" yang mentakrifkan
memanggil antara muka ke fungsi, menentukan parameter input dan output, dan mengandungi
kod yang memaut ke perpustakaan luaran. Perintah lain ialah "pp_end" yang selesai
definisi PP. Untuk butiran lihat halaman manusia PDL::PP, tetapi kami juga telah berjaya
contoh di sini.

gandakan lapan_jumlah(int n)
{
int i;
jumlah dua kali 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));
}
pulangan 1.0/jumlah;
}

Kami di sini akan menunjukkan kepada anda contoh cara anda antara muka kod C dengan PDL. Ini adalah yang pertama
contoh dan akan menunjukkan kepada anda cara menganggarkan nombor 8...

Kod C ditunjukkan di atas dan merupakan fungsi mudah yang mengembalikan dua kali ganda, dan mengharapkan satu
integer - bilangan sebutan dalam jumlah - sebagai input. Fungsi ini boleh ditakrifkan dalam a
perpustakaan atau, seperti yang kita lakukan di sini, sebagai fungsi sebaris.

Kami akan menangguhkan penulisan Makefile sehingga kemudian. Mula-mula kita akan membina ".pd"
fail. Ini ialah fail yang mengandungi kod PDL::PP. Kami memanggil ini "lapan.pd" .

#
# pp_def mentakrifkan fungsi PDL.
#
pp_addhdr (
'
gandakan lapan_jumlah(int n)
{
int i;
jumlah dua kali 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));
}
pulangan 1.0/jumlah;

}
');

pp_def (
'lapan',
Pars => 'int a(); ganda [o]b();',
Kod => '$b()=eight_sum($a());'
);

# Sentiasa pastikan anda menyelesaikan pengisytiharan PP anda dengan
# pp_selesai

pp_done();

Keanehan dengan contoh kami ialah kami telah memasukkan keseluruhan kod dengan "pp_addhdr"
bukannya memautkannya. Ini hanya untuk tujuan contoh, secara tipikal
aplikasi anda akan menggunakan "pp_addhdr" untuk memasukkan fail pengepala. Perhatikan bahawa hujah kepada
"pp_addhdr" disertakan dalam petikan.

Apa yang paling penting dalam contoh ini ialah arahan "pp_def". Hujah pertama
untuk ini adalah nama fungsi baru lapan , kemudian muncul hash yang daging sebenar:

· Ini memberikan parameter input (di sini "a") dan parameter output (di sini "b"). The
yang terakhir ditunjukkan oleh penentu "[o]". Kedua-dua hujah boleh mempunyai jenis
spesifikasi seperti yang ditunjukkan di sini.

Banyak variasi dan fleksibiliti lanjut dalam antara muka boleh ditentukan. Lihat
"perldoc PDL::PP" untuk butiran.

· Suis ini mengandungi kod yang harus dilaksanakan. Seperti yang anda lihat ini agak
campuran pelik C dan Perl, tetapi pada dasarnya ia adalah sama seperti anda akan menulisnya dalam C, tetapi
pembolehubah yang diluluskan daripada PDL dilayan secara berbeza dan perlu dirujuk
dengan '$' sebelumnya.

Terdapat juga makro mudah untuk menghantar penunjuk kepada data dan untuk mendapatkan nilai
kuantiti Perl lain, lihat halaman manual untuk butiran lanjut.

Akhir sekali, perhatikan panggilan ke "pp_done()" di penghujung fail. Ini perlu dalam semua PP
fail.

OKEY. Jadi sekarang kami mempunyai fail dengan kod yang kami sangat ingin gunakan dalam Perl melalui PDL. Kepada
melakukan ini kita perlu menyusun fungsi, dan untuk melakukan itu kita memerlukan Makefile.

gunakan PDL::Core::Dev;
gunakan ExtUtils::MakeMaker;
PDL::Core::Dev->import();

$package = ["eight.pd",Eight,PDL::Eight];
% hash = pdlpp_stdargs($pakej);

WriteMakefile( %hash );

sub MY::postamble {pdlpp_postamble($package)};

Kod di atas harus dimasukkan ke dalam fail yang dipanggil Makefile.PL, yang kemudiannya harus dipanggil
dalam cara Perl standard: "perl Makefile.PL" . Ini sepatutnya memberi anda Makefile dan
menjalankan "make" harus menyusun modul untuk anda dan "make install" akan memasangnya untuk
anda.

Q: 7.3 Cara boleh I antara muka pakej XXX in PDL?
Soalan ini berkait rapat dengan soalan sebelumnya, dan seperti yang kami katakan di sana, PDL::PP
pra-pemproses ialah cara standard antara muka pakej luaran dengan PDL. Paling banyak
cara biasa untuk menggunakan PDL::PP ialah menulis rutin antara muka yang pendek, lihat PDL::PP perldoc
muka surat dan jawapan kepada soalan sebelumnya sebagai contoh.

Walau bagaimanapun, ia juga mungkin untuk antara muka pakej ke PDL dengan menulis semula fungsi anda dalam
PDL::PP secara langsung. Ini boleh menjadi mudah dalam situasi tertentu, khususnya jika anda ada
rutin yang mengharapkan fungsi sebagai input dan anda ingin lulus fungsi Perl
fungsi untuk kemudahan.

Halaman perldoc PDL::PP ialah sumber utama maklumat untuk menulis sambungan PDL::PP,
tetapi ia sangat berguna untuk mencari fail dalam pengedaran PDL sebagai banyak teras
fungsi ditulis dalam PDL::PP. Cari fail yang berakhir dengan ".pd" iaitu secara amnya
akhiran diterima untuk fail PDL::PP. Tetapi kami juga mempunyai contoh mudah di sini.

Contoh berikut akan menunjukkan kepada anda cara menulis fungsi mudah yang secara automatik
membolehkan threading. Untuk membuat ini ringkas contoh adalah fungsi yang hampir remeh, tetapi
niatnya adalah untuk menunjukkan asas menulis antara muka PDL::PP.

Kami akan menulis fungsi mudah yang mengira minimum, maksimum dan purata a
piddle. Pada mesin saya fungsi yang terhasil adalah 8 kali lebih cepat daripada fungsi terbina dalam
"stats" (sudah tentu yang terakhir juga mengira median).

Mari terus masuk. Berikut ialah kod (daripada fail yang dipanggil "quickstats.pd") )

#
pp_def('quickstats',
Pars => 'a(n); [o]avg(); [o]maks(); [o]min()',
Kod => '$GENERIC(a) curmax, curmin;
$GENERIK(a) tmp=0;
gelung(n) %{
tmp += $a();
jika (!n || $a() > curmax) { curmax = $a();}
jika (!n || $a() < curmin) { curmin = $a();}
%}
$avg() = tmp/$SIZE(n);
$maks() = curmax;
$min() = curmin;
'
);

pp_done();

Perkara di atas mungkin kelihatan seperti campuran C dan Perl yang mengelirukan, tetapi di sebalik yang pelik
sintaks terletak bahasa yang sangat berkuasa. Mari kita ambil baris demi baris.

Baris pertama mengisytiharkan bahawa kami memulakan definisi fungsi PDL:PP yang dipanggil
"statistik pantas" .

Baris kedua adalah sangat penting kerana ia menentukan parameter input dan output
fungsi. a(n) memberitahu kami bahawa terdapat satu parameter input yang akan kami rujuk sebagai "a"
yang dijangka menjadi vektor panjang n (begitu juga matriks, kedua-dua segi empat sama dan
segi empat tepat akan ditulis sebagai "a(n,n)" dan "a(n,m)" masing-masing). Untuk menunjukkan bahawa
sesuatu adalah parameter output yang kami letakkan "[o]" di hadapan nama mereka, jadi merujuk kembali
kepada kod kita melihat bahawa purata, maks dan min ialah tiga parameter keluaran, semuanya adalah
skalar (kerana mereka tidak mempunyai saiz dimensi yang ditunjukkan.

Baris ketiga memulakan definisi kod yang pada asasnya adalah C tulen tetapi dengan beberapa
fungsi yang selesa. $GENERIC ialah fungsi yang mengembalikan jenis C hujahnya -
di sini parameter input a. Oleh itu dua baris pertama bahagian kod adalah berubah-ubah
pengisytiharan.

Pembinaan gelung(n) ialah fungsi kemudahan yang melingkari dimensi yang dipanggil n dalam
bahagian parameter. Di dalam gelung ini kita mengira jumlah kumulatif input
vektor dan menjejaki nilai maksimum dan minimum. Akhirnya kami menetapkan yang terhasil
nilai kepada parameter output.

Akhirnya kami menyelesaikan pengisytiharan fungsi kami dengan "pp_done()" .

Untuk menyusun fungsi baru kami, kami perlu mencipta Makefile, yang kami hanya akan senaraikan sejak itu
penciptaannya dibincangkan dalam soalan terdahulu.

gunakan PDL::Core::Dev;
gunakan ExtUtils::MakeMaker;
PDL::Core::Dev->import();

$package = ["quickstats.pd",Quickstats,PDL::Quickstats];
% hash = pdlpp_stdargs($pakej);

WriteMakefile( %hash );

sub MY::postamble {pdlpp_postamble($package)};

Contoh Makefile.PL

Fungsi statistik baharu kami kini harus disusun menggunakan cara Perl yang telah dicuba dan diuji: "perl
Makefile.PL; buat".

Anda harus bereksperimen dengan fungsi ini, menukar pengiraan dan input dan output
parameter. Bersempena dengan halaman perldoc PDL::PP ini sepatutnya membolehkan anda dengan cepat
tulis rutin yang lebih maju terus dalam PDL::PP.

Gunakan PDL::FAQp dalam talian menggunakan perkhidmatan onworks.net


Pelayan & Stesen Kerja Percuma

Muat turun apl Windows & Linux

Arahan Linux

Ad